1. 配置结构
整个logback.xml
配置文件的结构如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <springProperty scope="context" name="logPath" source="logging.file.path"/> <property name="param.name" value="param.value" />
<contextName>${param.name}</contextName>
<appender name="appenderNameDemo" class="appender种类" > ... <filter></filter>
<file></file>
<rollingPolicy> <fileNamePattern></fileNamePattern> <maxFileSize></maxFileSize> <maxHistory>具体天数</maxHistory> <totalSizeCap></maxHistory> </rollingPolicy>
<encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender>
<appender name="异步日志配置" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>0</queueSize> <appender-ref ref="appenderNameDemo"/> </appender>
<logger> ... </logger> <root level="日志级别"> ... </root> </configuration>
|
2. 属性说明
2.1 configuration
configuration
标签中有: scan
、scanPeriod
、debug
三个属性,属性含义如下:
scan
: 当此属性设置为true
时,配置文件如果发生改变,将会被重新加载,默认值为true
。
scanPeriod
: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan
为true
时,此属性生效。默认的时间间隔为1分钟。
debug
: 当此属性设置为true
时,将打印出logback
内部日志信息,实时查看logback
运行状态。默认值为false
。
使用示例:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"> ... </configuration>
|
2.2 springProperty
获取 SpringBoot
中的配置信息,
使用示例:
修改配置文件: src/main/resources/application.properties
在src/main/resources/logback-spring.xml
使用:
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="300 seconds"> <springProperty scope="context" name="logPath" source="logging.file.path"/> ... </configuration>
|
2.3 contextName
每个logger
都关联到logger
上下文,默认上下文名称为default
。但可以使用contextName
标签设置成其他名字,用于区分不同应用程序的记录。
使用示例:
在src/main/resources/logback-spring.xml
使用:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="300 seconds"> <contextName>log-demo-contextName</contextName> <appender name="CONSOLE-LOG" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%date -[%contextName] %-5level-[%thread] %class.%method|%line : %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="CONSOLE-LOG"/> </root> </configuration>
|
2.4 property
用来定义变量值的标签,通过property
定义的值会被插入到logger
上下文中。
property
标签中有: name
、value
两个个属性,属性含义如下:
name
的值是变量的名称
value
的值时变量定义的值
定义变量后,可以使${name}
来使用变量。
使用示例:
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <property name="param.name" value="param.value" /> <contextName>${param.name}</contextName> ... </configuration>
|
2.5 logger
用来设置某一个包或者具体的某一个类的日志打印级别以及指定appender
,这样就可以控制非业务日志不写到对应的文件日志中。
logger
标签中有: name
、level
、additivity
三个属性,属性含义如下:
-
name
: 包的路径信息,比如只打印TestController
控制器:com.hui.logdemo.controller.LogController
或者包(com.hui.logdem
)的日志。
level
: 日志的级别,指打印某级别或更高级别的日志。
additivity
: 是否向上级logger
传递打印信息,默认为true
使用示例:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="300 seconds"> <appender name="INFO_LOG" class="ch.qos.logback.core.FileAppender"> <file>logs/info.log</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%date %-5level-[%thread] %class.%method|%line : %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <logger name="com.hui.logdemo" level="info" additivity="false"> <appender-ref ref="INFO_LOG"/> </logger> </configuration>
|
2.6 root
根logger
,也是一种logger
,且只有一个level
属性。使用案例参考: 2.3 contextName
root和logger的区别?
root
和根logger
其实是一回事;只不过root
中不能有name
和additivity
这两个属性。
2.7 appender
负责写日志的组件,内容比较繁杂放到Logback配置文件详解(下篇)单独讲。