【Log】logback实现每个类和包自定义级别输出

时间:2023-03-09 12:51:28
【Log】logback实现每个类和包自定义级别输出

  本例想实现对类或者包中的日志,自定义级别输出

方法一

  1、自定义日志级别方式如下:

    代码文件:Logger monitorLogger = LoggerFactory.getLogger("monitor");  //在声明实例时创建自定义级别标签,monitor就是自定义的标签。

  2、输出日志采用这样的方式:

    代码文件:monitorLogger.info("======info");

  3、配置文件:声明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>${Log_Home}/info/monitor.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender> <!-- name="monitor":设置日志名为monitor的日志 -->
<!-- additivity="false":只在当前appender中打印 -->
<logger name="monitor" additivity="false"> <!-- 添加appender -->
<appender-ref ref="file—monitor"/>
</logger>

方法二

  1、自定义日志级别方式如下:

    代码文件:Logger monitorLogger = LoggerFactory.getLogger("monitor");  //在声明实例时创建自定义级别标签,monitor就是自定义的标签。

  2、输出日志采用这样的方式:

    代码文件:monitorLogger.info("======info");

  3、自定义过滤器SampleFilter.java

 package com.test;

 import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply; /**
* 日志过滤器
* @author H__D
* @date 2019-07-12 01:22:26
*
*/
public class SampleFilter extends Filter<ILoggingEvent> { @Override
public FilterReply decide(ILoggingEvent event) { // 判断日志名是否包含monitor
if (event.getLoggerName().contains("monitor")) {
return FilterReply.ACCEPT;
}
return FilterReply.DENY; }
}

  4、在配置文件appender中使用过滤器

 <!-- 时间滚动输出 level为 monitor 日志 -->
<appender name="file—monitor" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 使用自定义过滤器 -->
<filter class="com.test.SampleFilter">/filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${Log_Home}/info/monitor.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender> <!-- name="monitor":设置日志名为monitor的日志 -->
<!-- additivity="false":只在当前appender中打印 -->
<logger name="monitor" additivity="false"> <!-- 添加appender -->
<appender-ref ref="file—monitor"/>
</logger>