先来一段我们的代码。
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%-15(%d{HH:mm:ss.SSS}) [%t] %-5level %logger{80} [%line] -%msg%n</pattern>
</layout>
</appender>
<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>module</key>
<defaultValue>module</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${module}" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${log.root}/${module}/${module}.%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%-15(%d{HH:mm:ss.SSS}) [%t] %-5level %logger{80} [%line] -%msg%n</pattern>
</layout>
</appender>
</sift>
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
<appender-ref ref="SIFT"/>
</root>
<logger name="com.shangyu" level="debug" additivity="true">
<appender-ref ref="STDOUT" />
<!-- <appender-ref ref="SIFT" />-->
</logger>
stdout是打印在控制台。控制台的日志如下:
19:33:04.696 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.mapper.UserMapper.selectById [143] -==> Preparing: SELECT id,name,age,address,father_name FROM alin_user WHERE id=?
19:33:04.696 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.mapper.UserMapper.selectById [143] -==> Preparing: SELECT id,name,age,address,father_name FROM alin_user WHERE id=?
19:33:04.729 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.mapper.UserMapper.selectById [143] -==> Parameters: 1(Integer)
19:33:04.729 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.mapper.UserMapper.selectById [143] -==> Parameters: 1(Integer)
19:33:04.759 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.mapper.UserMapper.selectById [143] -<== Total: 1
19:33:04.759 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.mapper.UserMapper.selectById [143] -<== Total: 1
19:33:04.768 [http-nio-8080-exec-2] INFO com.shangyu.demo.controller.UserController [35] -info
19:33:04.768 [http-nio-8080-exec-2] INFO com.shangyu.demo.controller.UserController [35] -info
19:33:04.769 [http-nio-8080-exec-2] ERROR com.shangyu.demo.controller.UserController [36] -error
19:33:04.769 [http-nio-8080-exec-2] ERROR com.shangyu.demo.controller.UserController [36] -error
19:33:04.769 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.controller.UserController [37] -debug
19:33:04.769 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.controller.UserController [37] -debug
SIFT是打印日志到文件,粘一些文件中的日志如下:
19:33:04.696 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.mapper.UserMapper.selectById [143] -==> Preparing: SELECT id,name,age,address,father_name FROM alin_user WHERE id=?
19:33:04.729 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.mapper.UserMapper.selectById [143] -==> Parameters: 1(Integer)
19:33:04.759 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.mapper.UserMapper.selectById [143] -<== Total: 1
19:33:04.768 [http-nio-8080-exec-2] INFO com.shangyu.demo.controller.UserController [35] -info
19:33:04.769 [http-nio-8080-exec-2] ERROR com.shangyu.demo.controller.UserController [36] -error
19:33:04.769 [http-nio-8080-exec-2] DEBUG com.shangyu.demo.controller.UserController [37] -debug
可以看出,当additivity设为true时,这个logger标签会继承root,也就不止打印自己的日志,还会打印root的日志,打印两遍。所以一般情况下都会设置成false。