Logback配置文件(8大常用配置详解)

Logback配置文件(8大常用配置详解)-mikechen

Logback是Spring Boot默认使用的日志框架,Logback配置主要包含8大元素,下面我就来详解Logback配置@mikechen

Logback配置文件(8大常用配置详解)-mikechen

configuration

Logback配置文件的根元素,它包含所有的配置信息。

如下所示:

  1. <configuration>
  2. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  3. <encoder>
  4. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  5. </encoder>
  6. </appender

 

appender

定义一个Appender,即日志输出的目的地,如控制台或文件。

如下所示:

  1. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  2. <encoder>
  3. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  4. </encoder>
  5. </appender>

该元素有一个必须的name属性,和一个class属性,指定Appender的实现类。

 

encoder

定义日志输出格式,它包含在Appender元素中,可以使用pattern属性定义输出格式,也可以使用layout子元素指定一个Layout类。

如下所示:

  1. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  2. <encoder>
  3. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  4. </encoder>
  5. </appender>

 

logger

定义一个Logger,它有一个name属性,表示Logger的名称,也可以使用通配符匹配多个Logger。

如下所示:

  1. <logger name="com.example" level="INFO">
  2. <appender-ref ref="FILE" />
  3. </logger>

level属性指定Logger的日志级别。

 

root

定义根Logger,通常用于设置默认的日志级别和输出目的地。

如下所示:

  1. <root level="INFO">
  2. <appender-ref ref="CONSOLE" />
  3. </root>

一个Logger只能有一个父Logger,如果没有指定父Logger,则默认为根Logger。

 

level

定义日志级别,可以包含在Logger或Appender元素中。

如下所示:

  1. <root level="INFO">
  2. <appender-ref ref="CONSOLE" />
  3. </root>

Logback定义了五个日志级别,按照从低到高的顺序,分别是TRACE、DEBUG、INFO、WARN、ERROR。

 

filter

定义一个过滤器,可以用来过滤日志信息,可以包含在Logger或Appender元素中。

如下所示:

  1. <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  2. <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  3. <level>INFO</level>
  4. </filter>
  5. ...
  6. </appender>

 

rollingPolicy和triggeringPolicy

定义Appender的滚动策略和触发策略,滚动策略指定何时创建新的日志文件,触发策略指定何时触发滚动策略。

如下所示:

  1. <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  2. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  3. <fileNamePattern>logs/mylog-%d{yyyy-MM-dd}.log</fileNamePattern>
  4. <maxHistory>30</maxHistory>
  5. </rollingPolicy>
  6. ...
  7. </appender>

 

Logback完整的配置文件示例

  1. <configuration>
  2.  
  3. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  4. <encoder>
  5. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  6. </encoder>
  7. </appender>
  8.  
  9. <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  10. <file>logs/myapp.log</file>
  11. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  12. <fileNamePattern>logs/myapp-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  13. <maxHistory>30</maxHistory>
  14. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  15. <maxFileSize>10MB</maxFileSize>
  16. </timeBasedFileNamingAndTriggeringPolicy>
  17. </rollingPolicy>
  18. <encoder>
  19. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  20. </encoder>
  21. </appender>
  22.  
  23. <logger name="com.example" level="INFO">
  24. <appender-ref ref="FILE" />
  25. </logger>
  26.  
  27. <root level="INFO">
  28. <appender-ref ref="CONSOLE" />
  29. </root>
  30.  
  31. </configuration>

这个配置文件定义了两个Appender,一个输出到控制台,另一个输出到日志文件。

日志文件使用了时间滚动和文件大小限制策略,同时也定义了一个Logger和根Logger的输出目的地和日志级别。

以上就是Logback配置详解,更多Logback请查看:Logback最全详解(看这篇就够了)

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获知最新一线技术干货!

评论交流
    说说你的看法
欢迎您,新朋友,感谢参与互动!