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配置文件详解(下篇)单独讲。