标签作用:
appender标签 控制日志输出的内容
logger标签 控制日志可进行打印的级别
root标签 是logger标签的父级,若logger标签中activity=false则logger不进行继承。
难点梳理:
日志五个级别TRANCE<DEBUG<INFO<WARN<ERROR
1. appender标签中的filter子标签控制的是过滤内容。若选择INFO级别,则TRANCE和DEBUG将被过滤掉。
2. root标签中的level属性,基本没作用。。。
3. logger标签和root标签下都可声明0或多个appender标签。若logger和root下都声明了同一个appender,那将会输出两遍日志内容。
4. logger标签中的level属性,控制的是可打印至文本的日志级别。
但是,若level属性的参数与yml配置文件中的配置不一致,将以yml为准。yml配置文件如下
logging:
level:
com.ruoyi: debug
org.springframework: warn
重点:
1.日志最后输出的成品:先考虑appender下的filter的过滤等级。在考虑logger或root的level等级。
比如,filter选择过滤INFO级别的日志内容,logger选择输出DEBUG级别的日志内容,那最后输出到文件的只是INFO级别的日志内容。
原因:appender为我准备想要输出的内容,logger或root为我允许输入到文本上的内容(假设)。允许输出的级别再高但是没有准备也不能进行输出。
假设appender为我脑子里想的东西:数字1、2,logger和root为我允许写在的东西:数字1、2、3,那最后因为我只准备1、2两个数,所以输出结果只有1、2。
appender标签 示例
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- <file>${log.path}/sys-info.log</file>-->
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>DEBUG</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
logger标签示例
<!--
name 类名/包名
additivity=true继承root,false不继承root
logger - level 覆盖方式继承
appender-ref 附加方式继承
-->
<logger name="com.ruoyi" level="debug"/>
root标签示例
<root level="info">
<appender-ref ref="console" />
</root>