美文网首页
07.`logback`日志

07.`logback`日志

作者: 风安峻_ | 来源:发表于2020-09-07 14:07 被阅读0次
    1. 核心依赖

    spring boot已经集成了logback,不用导依赖,只要导入了spring-boot-starter即可,可以排除掉log4j

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-to-slf4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    2. 配置文件
    1. 主配置文件

      logging:
        level:
          # 配置打印mybatis的sql语句
          com.test.shop: debug
        config: classpath:logback-spring-dev.xml
      
    2. logback配置文件

      1. logback-spring-dev.xml → 开发环境

        <?xml version="1.0" encoding="UTF-8"?>
        <!-- 
            scan: 当配置文件被修改后, 将会被重新载入。
            scanPeriod:配置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
            debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 
        -->
        <configuration scan="true" scanPeriod="60 seconds">
            <!-- 名字随便起,这是开发环境的所以起名为develop -->
            <contextName>develop</contextName>
            
            <!-- 
                定义日志存放路径,通过${LOG_PATH}的方式可以引用该变量插入到logback的上下文
                当前盘符下的webapp/log/,如D:webapp/log/
                如果是Linux,则是根目录下的/webapp/log/
            -->
            <property name="LOG_PATH" value="/webapp/log/" />
            <!-- 定义日志输出格式 -->
            <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %boldRed(%thread) %highlight(%-5level) %boldGreen(%logger{32}) %msg%n"/>
        
            <!--1. 输出到控制台-->
            <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                <encoder>
                    <Pattern>${LOG_PATTERN}</Pattern>
                    <charset>utf-8</charset>
                </encoder>
            
                <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                    <level>debug</level>
                </filter>
            </appender>
        
            <!-- info日志文件 -->
            <appender name="FILE-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <!--常规日志文件,路径/文件名-->
                <file>${LOG_PATH}/log-info.log</file>
                <!-- 日志记录的滚动策略,按日期、大小进行记录 -->
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!--归档日志文件-->
                    <fileNamePattern>${LOG_PATH}/info/log-info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                        <maxFileSize>30MB</maxFileSize>
                    </timeBasedFileNamingAndTriggeringPolicy>
                    <!-- 日志保留天数 -->
                    <maxHistory>15</maxHistory>
                </rollingPolicy> 
                <append>true</append>
                <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{32} Line:%-3L - %msg%n</pattern>
                    <charset>utf-8</charset>
                </encoder>
                <filter class="ch.qos.logback.classic.filter.LevelFilter">
                    <level>info</level>
                </filter>
            </appender>
            
            <!-- warn 日志文件 -->
            <appender name="FILE-WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <!-- warn 日志文件 -->
                <file>${LOG_PATH}/log-warn.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!--归档日志文件-->
                    <fileNamePattern>${LOG_PATH}/warn/log-warn.%d{yyyy-MM}.%i.log</fileNamePattern>
                    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                        <maxFileSize>30MB</maxFileSize>
                    </timeBasedFileNamingAndTriggeringPolicy>
                    <maxHistory>15</maxHistory>
                </rollingPolicy>
                <append>true</append>
                <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger Line:%-3L - %msg%n</pattern>
                    <charset>utf-8</charset>
                </encoder>
                <filter class="ch.qos.logback.classic.filter.LevelFilter">
                    <level>WARN</level>
                    <onMatch>ACCEPT</onMatch>
                    <onMismatch>DENY</onMismatch>
                </filter>
            </appender>
            
            <!-- error 归档日志文件 -->
            <appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <!-- error 归档日志文件 -->
                <file>${LOG_PATH}/log-err.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!-- error 归档日志文件 -->
                    <fileNamePattern>${LOG_PATH}/err/log-err.%d{yyyy-MM}.%i.log</fileNamePattern>
                    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                        <maxFileSize>30MB</maxFileSize>
                    </timeBasedFileNamingAndTriggeringPolicy>
                    <maxHistory>15</maxHistory>
                </rollingPolicy>
                <append>true</append>
                <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <pattern>${LOG_PATTERN}</pattern>
                    <charset>utf-8</charset>
                </encoder>
                <filter class="ch.qos.logback.classic.filter.LevelFilter">
                    <level>ERROR</level>
                    <onMatch>ACCEPT</onMatch>
                    <onMismatch>DENY</onMismatch>
                </filter>
            </appender>
            
            <!--请求日志文件-->
            <appender name="HTTP-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${LOG_PATH}/log-http.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <fileNamePattern>${LOG_PATH}/http/log-http.%d{yyyy-MM}.%i.log</fileNamePattern>
                    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                        <maxFileSize>30MB</maxFileSize>
                    </timeBasedFileNamingAndTriggeringPolicy>
                    <maxHistory>15</maxHistory>
                </rollingPolicy>
                <append>true</append>
                <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger Line:%-3L - %msg%n</pattern>
                    <charset>utf-8</charset>
                </encoder>
                <filter class="ch.qos.logback.classic.filter.LevelFilter">
                    <level>info</level>
                </filter>
            </appender>
            
            <!-- 异步输出,异步的log片段必须在同步段后面,否则不起作用 -->
            <appender name="FILE-INFO-ASYNC" class="ch.qos.logback.classic.AsyncAppender">
                <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
                <discardingThreshold>0</discardingThreshold>
                <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
                <queueSize>256</queueSize>
                <!-- 添加附加的appender,最多只能添加一个 -->
                <appender-ref ref="FILE-INFO"/>
            </appender>
            
            <appender name="FILE-WARN-ASYNC" class="ch.qos.logback.classic.AsyncAppender">
                <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
                <discardingThreshold>0</discardingThreshold>
                <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
                <queueSize>256</queueSize>
                <!-- 添加附加的appender,最多只能添加一个 -->
                <appender-ref ref="FILE-WARN"/>
            </appender>
            
            <appender name="FILE-ERROR-ASYNC" class="ch.qos.logback.classic.AsyncAppender">
                <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
                <discardingThreshold>0</discardingThreshold>
                <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
                <queueSize>256</queueSize>
                <!-- 添加附加的appender,最多只能添加一个 -->
                <appender-ref ref="FILE-ERROR"/>
            </appender>
            
            <!-- 根日志,用来指定最基础的日志输出级别,只有一个level属性。-->
            <root level="info">
                <!-- 标识这个appender将会添加到这个loger -->
                <appender-ref ref="STDOUT"/>
                <appender-ref ref="FILE-INFO-ASYNC"/>
                <appender-ref ref="FILE-WARN-ASYNC"/>
                <appender-ref ref="FILE-ERROR-ASYNC"/>
            </root>
        </configuration>
        
      2. 说明

        1. %d:日期转换,花括号中指定日期的格式。
        2. %-4relative:该条日志输出的时间,这个时间是相对于服务器启动到打印出这条日志的相对时间,4表示时间占用的宽度。
        3. %-5level:日志的级别,日志总共5个级别,分别是debug,info,warn,error,fatal,从左往右日志级别越高,5表示日志级别占用的字符宽度。
        4. %thread:该日志所属的线程。
        5. %logger{32}:输出该日志信息的类,32表示包的层级。
        6. %msg:日志信息。
        7. %n::换行。
      3. 注意

        1. 生产环境不要打印到控制台

    相关文章

      网友评论

          本文标题:07.`logback`日志

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