本例想实现对类或者包中的日志,自定义级别输出
方法一
1、自定义日志级别方式如下:
代码文件:Logger monitorLogger = LoggerFactory.getLogger("monitor"); //在声明实例时创建自定义级别标签,monitor就是自定义的标签。
2、输出日志采用这样的方式:
代码文件:monitorLogger.info("======info");
3、配置文件:声明Logger的处理节点
1 <!-- 时间滚动输出 level为 monitor 日志 --> 2 <appender name="file—monitor" class="ch.qos.logback.core.rolling.RollingFileAppender"> 3 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 4 <level>INFO</level> 5 <onMatch>ACCEPT</onMatch> 6 <onMismatch>DENY</onMismatch> 7 </filter> 8 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 9 <FileNamePattern>${Log_Home}/info/monitor.%d{yyyy-MM-dd}.%i.log</FileNamePattern> 10 <MaxHistory>30</MaxHistory> 11 </rollingPolicy> 12 <encoder> 13 <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern> 14 </encoder> 15 </appender> 16 17 <!-- name="monitor":设置日志名为monitor的日志 --> 18 <!-- additivity="false":只在当前appender中打印 --> 19 <logger name="monitor" additivity="false"> 20 21 <!-- 添加appender --> 22 <appender-ref ref="file—monitor"/> 23 </logger>
方法二
1、自定义日志级别方式如下:
代码文件:Logger monitorLogger = LoggerFactory.getLogger("monitor"); //在声明实例时创建自定义级别标签,monitor就是自定义的标签。
2、输出日志采用这样的方式:
代码文件:monitorLogger.info("======info");
3、自定义过滤器SampleFilter.java
1 package com.test; 2 3 import ch.qos.logback.classic.spi.ILoggingEvent; 4 import ch.qos.logback.core.filter.Filter; 5 import ch.qos.logback.core.spi.FilterReply; 6 7 /** 8 * 日志过滤器 9 * @author H__D 10 * @date 2019-07-12 01:22:26 11 * 12 */ 13 public class SampleFilter extends Filter<ILoggingEvent> { 14 15 @Override 16 public FilterReply decide(ILoggingEvent event) { 17 18 // 判断日志名是否包含monitor 19 if (event.getLoggerName().contains("monitor")) { 20 return FilterReply.ACCEPT; 21 } 22 return FilterReply.DENY; 23 24 } 25 }
4、在配置文件appender中使用过滤器
1 <!-- 时间滚动输出 level为 monitor 日志 --> 2 <appender name="file—monitor" class="ch.qos.logback.core.rolling.RollingFileAppender"> 3 <!-- 使用自定义过滤器 --> 4 <filter class="com.test.SampleFilter">/filter> 5 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 6 <FileNamePattern>${Log_Home}/info/monitor.%d{yyyy-MM-dd}.%i.log</FileNamePattern> 7 <MaxHistory>30</MaxHistory> 8 </rollingPolicy> 9 <encoder> 10 <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern> 11 </encoder> 12 </appender> 13 14 <!-- name="monitor":设置日志名为monitor的日志 --> 15 <!-- additivity="false":只在当前appender中打印 --> 16 <logger name="monitor" additivity="false"> 17 18 <!-- 添加appender --> 19 <appender-ref ref="file—monitor"/> 20 </logger>