美文网首页Log
Logback日志配置

Logback日志配置

作者: 代码腌菜 | 来源:发表于2019-06-17 11:09 被阅读0次

    springboot 使用指定 logback.xml 的方法:

    application.yml 配置

    logging:
      config: classpath:conf/logback-spring.xml
      path: d:/logs #日志路径
    

    logback-spring.xml 文件获取 application.yml 里的值。logback 提供了 一个标签 <springProperty>

    <springProperty scope="context" name="log_home" source="logging.path"/>
    

    例子:日志级别分离

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration scan="true" scanPeriod="60 seconds" debug="false">
             
        <springProperty scope="context" name="log_home" source="logging.path"/> 
        <!--输出表达式:时间 - 日志级别 线程 输出日志的类 输出的信息 换行-->
        <property name="my_pattern"
                  value="%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p [%15.15t] [%-40.40logger{39}] %m%n"></property>
        <!--日志保留的份数:10份-->
        <property name="my_max_history" value="10"></property>
        <!--
            文件输出格式和频率:也将作为文件名的一部分
                yyyy-MM-dd-HH   每小时生成一个文件
                yyyy-MM-dd      每天生成一个文件
        -->
        <property name="file_name" value="yyyy-MM-dd-HH"></property>
        <!--控制台输出-->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${my_pattern}</pattern>
                <charset>utf8</charset>
            </encoder>
        </appender>
        <!--只输出 ERROR 以下级别-->
        <appender name="INFOLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>DENY</onMatch>
                <onMismatch>ACCEPT</onMismatch>
            </filter>
            <encoder>
                <pattern>${my_pattern}</pattern>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log_home}/hc_log_info_%d{${file_name}}.log</fileNamePattern>
                <maxHistory>${my_max_history}</maxHistory>
            </rollingPolicy>
        </appender>
        <!--输出 WARN 和 ERROR 级别-->
        <appender name="ERRORLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>WARN</level>
            </filter>
            <encoder>
                <pattern>${my_pattern}</pattern>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log_home}/hc_log_error_%d{${file_name}}.log</fileNamePattern>
                <maxHistory>${my_max_history}</maxHistory>
            </rollingPolicy>
        </appender>
        <logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
        <logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>
        <logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
        <logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>
        <logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
        <logger name="org.crsh.plugin" level="WARN"/>
        <logger name="org.crsh.ssh" level="WARN"/>
        <logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>
        <logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
        <logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration" level="WARN"/>
        <logger name="org.springframework.boot.actuate.endpoint.jmx" additivity="false"></logger>
        <logger name="org.thymeleaf" additivity="false"></logger>
        <logger name="com.gov.xsbn" level="DEBUG"></logger>
        <root level="INFO">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="INFOLOG"/>
            <appender-ref ref="ERRORLOG"/>
        </root>
    </configuration>
    

    综合笔记

    说明:这里的配置是指xml的配置。

    思维整理:


    image.png

    configuration 标签:

    image.png

    properties 标签

    image.png

    root 标签

    • 属性:level 即输出的级别(TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF)
    • 包含标签:
    • <appender-ref ref="FILE" />
      • 属性 ref : 输出给谁。也就是 appender
    • 真相:
      • <root> 也是一个 <logger> 。但是它是根 logger 。其实他也有 name 属性 。只是由于是根, 所有就被命名成了 root。
        logger 标签
    • 用来设置具体某个一包或类的日志级别。
    • 属性:
      • name : 指定的类或包
      • level : 输出级别
    • 包含标签:
    • <appender-ref ref="FILE" />
      • 属性 ref : 输出给谁。也就是 appender
        appender 标签
    • 属性:
      • name:我就是那个谁,给我起个名字
      • class:真正干活的人。写的是全类名
        • image.png
        • 可以看到,有很多。常用的有一下几个:

        • ch.qos.logback.core.ConsoleAppender , ch.qos.logback.core.rolling.RollingFileAppender

      • 包含的标签

    appender 完整配置:分为2个,一个是控制台,一个是滚动文件

    <!--  控制台输出    -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <!--encoder : 日志信息的输出模式-->
            <encoder>
                <!--输出例子:控制台输出:- xxxxxxxxxxxxxxxxxxx -->
                <pattern>控制台日志: - %msg %n</pattern>
            </encoder>
        </appender>
        <!--文件滚动输出-->
        <appender name="FILELOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--encoder : 日志信息的输出模式-->
            <encoder>
                <pattern>文件输出: - %msg %n</pattern>
            </encoder>
            <!--
                输出过滤器:给输出的日志在进行一层过滤
               常用的:
                ch.qos.logback.classic.filter.LevelFilter 复杂点,下面写了一个例子
                ch.qos.logback.classic.filter.ThresholdFilter 简单,输出的级别大于等于 level 标签里的值都输出
                    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                        <level>INFO</level>
                    </filter>
            -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <!--
                    只输出 INFO 的内容
                -->
                <!--level 判断条件 -->
                <level>INFO</level>
                <!--
                    onMatch(匹配成功) 有2个值: ACCEPT 和 DENY
                    输出的级别等于 level 标签里的 级别时:
                        如果值 = ACCEPT ,则输出
                        如果值 = DENY , 不输出
                -->
                <onMatch>ACCEPT</onMatch>
                <!--
                    onMismatch(匹配不成功) 有2个值: ACCEPT 和 DENY
                    输出的级别等于 level 标签里的 级别时:
                        如果值 = ACCEPT ,则输出
                        如果值 = DENY , 不输出
                -->
                <onMismatch>DENY</onMismatch>
            </filter>
            <!--
                生成的文件名称:
                ch.qos.logback.core.rolling.TimeBasedRollingPolicy:时间滚动策略
            -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--每分钟生成一个文件-->
                <fileNamePattern>d:/lijia_%d{yyyy-MM-dd_hh_mm}.log</fileNamePattern>
                <!--只保留10个文件-->
                <maxHistory>10</maxHistory>
            </rollingPolicy>
        </appender>
    

    相关文章

      网友评论

        本文标题:Logback日志配置

        本文链接:https://www.haomeiwen.com/subject/gxoofctx.html