参考文章一
参考文章二
configuration
是XML文件根元素。root
和logger
可视为同一类,都是日志设置;root
是日志的全局设置,而logger
可以单独设置某一些包和类的日志输出。appender
配置日志格式、如何过滤、文件处理等。property
和contextName
元素,分别用来定义变量和应用上下文名称,非必须。
配置Logback的方式:
- 通过Spring Boot配置文件配置Logback
- 通过XMl文件自定义Logback配置
<?xml version="1.0" encoding="utf-8"?>
<configuration><contextName>logback-spring-demo-dev</contextName><property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n"/><property name="pattern-color" value="%yellow(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %green(%logger{50}) - %highlight(%msg) %n"/><property name="LOG_HOME" value="logs"/><!-- 控制台输出 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${pattern}</pattern></encoder></appender><!-- 控制台输出-带颜色 --><appender name="CONSOLE-WITH-COLOR" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${pattern-color}</pattern></encoder></appender><!-- 文件输出 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/all.%d.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30</maxHistory></rollingPolicy><encoder><pattern>${pattern}</pattern></encoder></appender><root level="INFO"><appender-ref ref="CONSOLE-WITH-COLOR"/><appender-ref ref="FILE"/></root><logger name="com.example.logbackdemo.IndexAction" level="info" additivity="false"><appender-ref ref="CONSOLE"/></logger></configuration>
- 两种属性:
contextName
和property
- 三个节点:
appender
、root
、logger
以下是配置文件的各个部分的详细解释:
-
<contextName>
:定义了日志上下文的名称,这里被设置为logback-spring-demo-dev
。这个名称通常用于区分不同的应用或环境。 -
<property>
:定义了一些属性,可以在配置文件中重复使用。在这个配置文件中定义了三个属性:pattern
:定义了日志的输出格式,包括时间戳、线程名、日志级别、日志发生的位置和消息。pattern-color
:定义了带颜色的日志输出格式,用于控制台输出,以便更容易区分不同级别的日志。LOG_HOME
:定义了日志文件的存储目录,这里被设置为logs
。
-
<appender>
:设置日志渲染效果,name
表示该渲染器的名字,class
表示使用的输出策略,常见的有控制台输出策略(ConsoleAppender
)和文件输出策略(FileAppender
,RollingFileAppender
)。
这里配置了三种appender:CONSOLE
:标准的控制台输出,使用PatternLayoutEncoder
和pattern
属性来格式化日志。CONSOLE-WITH-COLOR
:也是控制台输出,但使用带颜色的pattern-color
属性来格式化日志。FILE
:定义了文件输出,使用RollingFileAppender
,它支持基于时间和文件大小的滚动策略。<rollingPolicy>
:是FILE
appender的一部分,定义了日志文件的滚动策略:fileNamePattern
:定义了滚动日志文件的命名模式。SizeAndTimeBasedFNATP
:定义了基于文件大小和时间的触发策略,其中maxFileSize
设置了单个文件的最大大小。maxHistory
:定义了要保留的最大历史记录天数。
-
<root>
:设置了根日志记录器(全局日志)的级别以及它使用的appender(CONSOLE-WITH-COLOR
和FILE
)。
日志级别:ERROR -> WARN -> INFO -> DEBUG
如配置日志级别为INFO,则INFO及以上级别的日志会输出,而比INFO级别低的日志(debug日志)不会被输出。
<logger>
:用来设置某一个类或者某个包的日志输出级别、以及关联的appender。additivity
设置为false
,意味着这个记录器不会将日志事件传递给根记录器。它只使用CONSOLE appender
进行日志记录,而不使用带颜色的版本。
总结:这个Logback
配置文件定义了日志输出到控制台和文件的方式。它包括了不同的appender,即CONSOLE
、CONSOLE-WITH-COLOR
和FILE
。文件输出使用了rollingFileAppender
,以按时间滚动的方式记录日志文件。根日志级别被设置为INFO
,并指定了输出到控制台的格式。同时,com.example.logbackdemo.IndexAction
包的日志级别被设置为INFO
,并将其输出到控制台。