configuration
是XML文件根元素。root
和logger
可视为同一类,都是日志设置;root
是日志的全局设置,而logger
可以单独设置某一些包和类的日志输出。appender
配置日志格式、如何过滤、文件处理等。property
和contextName
元素,分别用来定义变量和应用上下文名称,非必须。配置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
,并将其输出到控制台。