本例想實現對類或者包中的日志,自定義級別輸出
方法一
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>