麻烦老师看一下:
我的logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--scan:当配置文件发生改变,是否去自动重新加载-->
<!--scanPeriod:扫描配置文件是否发生变化的周期-->
<!--debug:是否打印出logback内部的运行信息-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--定义一些全局变量-->
<!--日志级别:按优先级升序排列(*为常用) TRACE *DEBUG *INFO WARN *ERROR-->
<property name="log.level" value="debug"/>
<!--log文件保留的时间-->
<property name="log.maxHistory" value="30"/>
<!--log文件存储的根路径-->
<!--${catalina.base}表示tomcat实例的根目录-->
<property name="log.filePath" value="${catalina.base}/logs/webapps"/>
<!--每条日志记录的格式-->
<property name="log.pattern"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
<!--设置日志的输出介质为控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--设置日志的输出格式-->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!--设置DEBUG类型的独占日志,并设置日志产生后向文件内写入-->
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--文件路径-->
<file>${log.filePath}/debug.log</file>
<!--配置日志的滚动策略为按时间滚动-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名称-->
<fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- 文件最大保存天数 -->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<!--设置日志的输出格式-->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!--过滤此项日志只记录debug级别的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMisMatch>DENY</onMisMatch>
</filter>
</appender>
<!--设置INFO类型的独占日志,并设置日志产生后向文件内写入-->
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--文件路径-->
<file>${log.filePath}/info.log</file>
<!--配置日志的滚动策略为按时间滚动-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名称-->
<fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- 文件最大保存天数 -->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<!--设置日志的输出格式-->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!--过滤此项日志只记录ino级别的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMisMatch>DENY</onMisMatch>
</filter>
</appender>
<!--设置ERROR类型的独占日志,并设置日志产生后向文件内写入-->
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--文件路径-->
<file>${log.filePath}/error.log</file>
<!--配置日志的滚动策略为按时间滚动-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名称-->
<fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- 文件最大保存天数 -->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<!--设置日志的输出格式-->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!--过滤此项日志只记录error级别的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMisMatch>DENY</onMisMatch>
</filter>
</appender>
<!--name:要在哪些类的运行中产生日志,一个类只能在一个logger中产生日志
level:产生日志的最低级别,
additivity:将父logger的appender也继承进来,并且以本logger的设定级别来产生日志-->
<logger name="com.zx.o2o" level="${log.level}" additivity="true">
<!--appender-ref:将logger与appender绑定-->
<appender-ref ref="debug"/>
<appender-ref ref="info"/>
<appender-ref ref="error"/>
</logger>
<!--root是一个特殊的根logger-->
<root level="info">
<appender-ref ref="console"/>
</root>
<!--上面两个logger(logger+root)在并存时会发生什么:
首先logger已经将全工程的类都纳入到自己的输出范围内,那别的logger就无法再输出日志,
其次root并没有指定输出范围,它绑定了一个在控制台输出日志的appender,按理说此appender是无效的,
但由于logger的additivity="true"这个属性,logger会继承root的appender,并改变日志的作用范围及产生级别为自身的设定,
所以console这个appender最终会生效,并且输出的是debug+的日志-->
</configuration>然后生成的三种日志文件中的内容是完全一样的,都是按照debug+级别生成日志
SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需
了解课程