spring-boot集成logback非常简单,只写一个logback.xml即可。
1、根节点configuration
<configuration debug="false" scan="true" scanPeriod="10 seconds">
有3个属性
- scan,为true,表示如果配置文件发生更改,重新加载配置文件。默认为true。
- scanPeriod,在scan为true时生效,表示监测配置文件修改的时间间隔。默认为1min。
- debug,为true打印logback内部日志信息,实时查看logback状态。默认为true。
1-1、子节点和
<contextName>MyAppContext</contextName>
<!-- 日志生成相对路径,后面可以改为绝对路径 -->
<property name="LOG_HOME" value="logs"/>
contextName表示logger上下文名称。
property用来设置属性,其中name,表示变量的名称,value,表示变量定义的值。该属性可以在后面通过${}来进行引用。
2、设置logger,root。
2-1、logger设置某个包或者某个类的打印级别以及指定对应的。
<logger name="org.springframework" level="warn" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
- name:用来指定受此logger影响的某个包名或某个类名。
- level:用来描述该logger打印级别,高于该级别的日志方进行打印。
- additivity:表示是否向上级loggger传递打印信息。默认为true。
2-2、root是顶级的logger,只需要指定级别即可。root可包含一个或多个appender-ref
<root level="info">
<appender-ref ref="STDOUT" />
</root>
3、设置appender。
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8" class="xxxx">
<Pattern>[%p] [%thread : %T] %d %C:%L ===>> %m%n</Pattern>
</encoder>
</appender>
appender是的子组件,是负责写日志的组件。有name和class两个必要属性。
- name指定appender的名称。
- class指定appender的全限定名。
常用appender如下:
3-1、ConsoleAppender
将日志输出到控制台,有如下子节点。
- :对日志进行格式化。
- :字符串 System.out 或者 System.err ,默认 System.out ;
示例:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
3-2、FileAppender
将日志添加到文本,有如下子节点:
- file:被写入的文件名。
- append:日志是否添加到尾部,默认为true。
- encoder:打印格式。
- prudent:安全写入该文件,尤其多个appender写入该文件时。效率低。默认为false。
示例:
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>testFile.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
3-3、RollingFileAppender
滚动记录日志,有如下子节点。
- file/append/encoder同上
- rollingPolicy:当滚动发生时,行为由本属性决定,有下面几种策略。
策略:
TimeBasedRollingPolicy。最常用的滚动策略,根据时间来触发滚动。常见属性为
- fileNamePattern:文件命名规则。
- maxHistory:最大归档文件数量。
示例
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
< fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
另外还有其他按照文件大小做滚动的策略,这里不再展开。
4、encoder
一是负责把日志信息转换为字符数组。二是把字符数组写入到输出流。
目前PatternLayoutEncoder 是唯一有用的且默认的encoder ,有一个节点,用来设置日志的输入格式。使用“%”加“转换符”方式,如果要输出“%”,则必须用“\”对“\%”进行转义。
常见规则见文档:
http://aub.iteye.com/blog/1103685
https://blog.csdn.net/xyr05288/article/details/73655597