springboot默认的日志配置:logback
根节点:
<configuration />
主要子节点:
<appender />:配置日志输出的方式,控制台,文件等。
<logger />、<root />:作用相同,细节配置不同,logger会覆盖root的日志输出,root是全局配置。
注意事项:
<logger />的additivity属性默认为true(代表日志继承关系),会查找上一级logger(实际按照包名查找上层logger),找到后不再判断logger的级别要求,直接找到对应的appender配置,将当前日志级别中的日志内容输出到其中。
上一级logger指的是父级包,日志会根据additivity的取值决定是否将日志输出到上层logger中。
配置两个logger节点:
<appender name="FILE1" class="ch.qos.logback.core.rolling.RollingFileAppender">
...
</appender>
<appender name="FILE2" class="ch.qos.logback.core.rolling.RollingFileAppender">
...
</appender>
<logger name="org.test.log" level="INFO" additivty="true"><!-- 1 -->
<appender-ref ref="FILE1"/>
</logger>
<logger name="org.test.log.controller" level="ERROR" additivty="true"><!-- 2 -->
<appender-ref ref="FILE2"/>
</logger
<!-- 当 1是ERROR,2是INFO时,1的日志文件中会存在2中所输出的info及以上级别的日志信息-->
当additivity=true时,父级包=info,子级包=error。info及以上级别的日志都会输入到父级日志中,在子级代码中有日志操作且只会将error信息输出到子级日志中。(FILE1有所有日志,FILE2只有error日志)
当additivity=false时,父级日志不会写入子级代码中的任何级别日志信息。(FILE1没有controller操作的任何级别日志,FILE2只有error日志)
一般当我们特意要将error日志单独输出时,只要在appender配置中配置filter过滤就可以。
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>