Logback配置

Logback配置文件(logback.xmllogback-spring.xml)的结构如下:

配置文件结构

配置文件的根元素是<configuration><configuration>元素下有一个或多个<appender><logger>元素,除此之外,有且仅有一个<root>元素。

Logback由3个核心组件LoggerAppenderLayout组成。

Logger

在配置文件(logback-spring.xml)中,Logger(日志收集器)对应<logger>元素。<logger>元素有3个属性:

  1. name:名称;
  2. level:日志级别,可选值有TRACEDEBUGINFOWARNERRORALL等等,大小写不敏感;
  3. additivity:是否输出日志到rootLogger配置的Appender中,可选值有truefalse,默认值为true。若值设为false,则只输出日志到当前的``元素配置的Appender</u>中。

<logger>元素下有一个或多个<appender-ref ref="XXX">元素,<appender-ref ref="XXX">元素用来匹配Logger的日志输出源。

rootLogger

rootLogger(根日志输出器)是一个特殊的Logger,用来配置公共的日志级别、日志输出源。对应<root>元素,配置和<logger>元素大同小异,相同的地方是有一个或多个<appender-ref ref="XXX">子元素,不同的地方是只有level属性,没有name、additivity属性。

Appender

<appender>元素用来配置日志输出源,常见的日志输出源有:

  • 终端;
  • 文件;
  • 数据库,如:MySQL、PostgreSQL、Oracle等;
  • 消息队列;
  • UNIX/Linux系统日志;

Appender配置元素结构

<appender>元素有2个属性:

  1. name:名称,一般大写;
  2. class:日志输出源实现类名(含包名);

<appender>元素下有一个或多个<layout><encoder><filter>等元素。

<layout><encoder>元素用来配置日志输出的格式、内容。

<filter>元素用来过滤日志内容,不常用,本篇文章暂不涉及。

Encoder、Layout

Encoder、Layout用来定义日志输出的格式、内容,对应如上所述<layout><encoder>元素,它们都只有1个属性——class,用来配置具体的实现类。

老版本推荐使用``元素,新版本推荐使用``元素</u>。在新版本中,如果要使用``元素,一般是把``作为``的子元素,即:

<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
    <layout class="ch.qos.logback.classic.PatternLayout">
    	<pattern>XXX</pattern>
    </layout>
</encoder>

<encoder>元素class属性的默认值是ch.qos.logback.classic.encoder.PatternLayoutEncoderPatternLayoutEncoder扩展了LayoutWrappingEncoder,内部直接封装了一个PatternLayout实例。因为PatternLayout 是最常用的一种Layout,所以PatternLayoutEncoder成为了最常见、最实用的一个Encoder

上述代码从而可以简写成:

<encoder>
	<pattern>XXX</pattern>
</encoder>

<pattern>元素用来配置PatternLayout的转换规则,详细的内容请参考官方的使用说明,下面给出一个例子:

%date{yyyy-MM-dd HH:mm:ss.SSS} %level ${APPLICATION_NAME:-} ${PID:-} %thread %file %line %logger %class %method : %msg %n %exception{full} %n
写于 2022年04月11日