【Log】logback實現每個類和包自定義級別輸出


  本例想實現對類或者包中的日志,自定義級別輸出

方法一

  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>  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM