通过LOGBACK实现每个类、包或自定义级别
项实现LOGBACK对每个包或者类或者通过自定义级别的方式实现自定义输出的日志进入制定的文件。查阅了很多资料,都没有找到行之有效的解决方案,直到看到了这篇文章http://www.360doc.com/content/14/1015/18/8072791_417222724.shtml 找到了解决方案。
解决方案大体思路:正常来讲配置好LOGBACK后,在代码页面使用private static Logger logger = LoggerFactory.getLogger(*.class);的方式就可以直接输出日志
logger.trace("======trace");
logger.debug("======debug");
logger.warn("======warn");
logger.error("======error");
但是!输出了很多我们不想要的无用信息,从海量的日志里找我们的输出如大海捞针。
自定义日志级别方式如下:
1、代码文件:Logger monitorLogger = LoggerFactory.getLogger("monitor"); //在声明实例时创建自定义级别标签,MOBITOR就是自定义的标签。
2、代码文件:输出日志采用这样的方式monitorLogger.info("======info");
3、配置文件:声明LOGGER的处理节点
<logger name="monitor" additivity="false"> <appender-ref ref="file—monitor"/> </logger>
<!-- 时间滚动输出 level为 monitor 日志 --> <appender name="file—monitor" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>D:/logs/monitor.%d{yyyy-MM-dd}.log</FileNamePattern> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder> <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern> </encoder> </appender>
保持JAVA代码实例标签MONITOR和配置文件中的LOGGER NAME属性一致即可。
通过如上代码的实现,就可以看到我们输出的INFO文件是独立的 并且没有系统的任何信息 都是自己指定输出的内容。
---------
额外话题:今天为了解决这个问题查阅了很多资料,分享给其他人。