我的三种日志文件的内容是一样的,没有实现分类
来源:3-3 验证配置
27Done
2018-07-06
麻烦老师看一下:
我的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+级别生成日志
写回答
2回答
-
翔仔
2018-07-06
同学好,你可以复用我的
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- 定义参数常量 --> <!-- TRACE<DEBUG<INFO<WARN<ERROR --> <!-- logger.trace("msg") logger.debug... --> <property name="log.level" value="debug" /> <property name="log.maxHistory" value="30" /> <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="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${log.pattern}</pattern> </encoder> </appender> <!-- DEBUG --> <appender name="debugAppender" 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> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- INFO --> <appender name="infoAppender" 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> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- ERROR --> <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 文件路径 --> <file>${log.filePath}/erorr.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> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <logger name="com.imooc.o2o" level="${log.level}" additivity="true"> <appender-ref ref="debugAppender"/> <appender-ref ref="infoAppender"/> <appender-ref ref="errorAppender"/> </logger> <root level="info"> <appender-ref ref="consoleAppender"/> </root> </configuration>
我的是没有问题的
032018-07-09 -
27Done
提问者
2018-07-06
补上我的测试类:
package com.zx.o2o.web.superadmin; import com.zx.o2o.entity.Area; import com.zx.o2o.service.AreaService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller @RequestMapping("/superadmin") public class AreaController { Logger logger = LoggerFactory.getLogger(AreaController.class); @Autowired private AreaService areaService; @RequestMapping("/listarea") @ResponseBody private Map<String,Object> listArea(){ logger.info("=====strat====="); long stratTime = System.currentTimeMillis(); Map<String,Object> modelMap = new HashMap<>(); List<Area> areas = new ArrayList<>(); try { areas = areaService.getAreaList(); modelMap.put("rows",areas); modelMap.put("total",areas.size()); }catch (Exception e){ modelMap.put("success",false); modelMap.put("errMsg",e.toString()); } logger.error("test error!"); long endTime = System.currentTimeMillis(); logger.debug("costTime:[{}ms]",endTime-stratTime); logger.info("=====end====="); return modelMap; } }
00
相似问题