通过LOGBACK实现每个类包或自定义级别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过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文件是独立的 并且没有系统的任何信息 都是自己指定输出的内容。

 

---------

额外话题:今天为了解决这个问题查阅了很多资料,分享给其他人。

以上是关于通过LOGBACK实现每个类包或自定义级别的主要内容,如果未能解决你的问题,请参考以下文章

Logback中使用TurboFilter实现日志级别等内容的动态修改

logback:两个appender,多个logger,不同级别

logback日志的配置使用

logback 更改日志级别需要重启吗

小技巧:如何自定义logback日志文件的名称

通过URL方式动态修改logback level级别