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

configuration
Logback配置文件的根元素,它包含所有的配置信息。
如下所示:
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender
appender
定义一个Appender,即日志输出的目的地,如控制台或文件。
如下所示:
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
该元素有一个必须的name属性,和一个class属性,指定Appender的实现类。
encoder
定义日志输出格式,它包含在Appender元素中,可以使用pattern属性定义输出格式,也可以使用layout子元素指定一个Layout类。
如下所示:
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
logger
定义一个Logger,它有一个name属性,表示Logger的名称,也可以使用通配符匹配多个Logger。
如下所示:
<logger name="com.example" level="INFO"> <appender-ref ref="FILE" /> </logger>
level属性指定Logger的日志级别。
root
定义根Logger,通常用于设置默认的日志级别和输出目的地。
如下所示:
<root level="INFO"> <appender-ref ref="CONSOLE" /> </root>
一个Logger只能有一个父Logger,如果没有指定父Logger,则默认为根Logger。
level
定义日志级别,可以包含在Logger或Appender元素中。
如下所示:
<root level="INFO"> <appender-ref ref="CONSOLE" /> </root>
Logback定义了五个日志级别,按照从低到高的顺序,分别是TRACE、DEBUG、INFO、WARN、ERROR。
filter
定义一个过滤器,可以用来过滤日志信息,可以包含在Logger或Appender元素中。
如下所示:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
...
</appender>
rollingPolicy和triggeringPolicy
定义Appender的滚动策略和触发策略,滚动策略指定何时创建新的日志文件,触发策略指定何时触发滚动策略。
如下所示:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/mylog-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
...
</appender>
Logback完整的配置文件示例
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/myapp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/myapp-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.example" level="INFO">
<appender-ref ref="FILE" />
</logger>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
这个配置文件定义了两个Appender,一个输出到控制台,另一个输出到日志文件。
日志文件使用了时间滚动和文件大小限制策略,同时也定义了一个Logger和根Logger的输出目的地和日志级别。
以上就是Logback配置详解,更多Logback请查看:Logback最全详解(看这篇就够了)
mikechen睿哥
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。