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

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

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

Logback配置文件(8大常用配置详解)-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年+大厂架构经验,大厂资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法