[Log] logback implements the output of each class and package at a custom level.

Posted by rougue on Tue, 29 Oct 2019 17:54:51 +0100

In this case, you want to customize the level output of the logs in the class or package.

Method 1

1. The user-defined log level is as follows:

Code file: Logger monitorLogger = LoggerFactory.getLogger("monitor"); / / create a custom level label when declaring an instance. Monitor is the custom label.

2. Output logs in this way:

Code file: monitorLogger.info("======info");

3. Configuration file: declare the processing node of the Logger

 1 <!-- Time scrolling output level by monitor Journal -->
 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": Set the log name to monitor Log -->
18 <!-- additivity="false": Only at present appender Print in -->
19 <logger name="monitor" additivity="false">
20     
21     <!-- Add to appender -->
22     <appender-ref ref="file—monitor"/>  
23 </logger> 

 

Method two

1. The user-defined log level is as follows:

Code file: Logger monitorLogger = LoggerFactory.getLogger("monitor"); / / create a custom level label when declaring an instance. Monitor is the custom label.

2. Output logs in this way:

Code file: monitorLogger.info("======info");

3. Custom filter 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  * Log filter
 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         // Determine whether the log name contains monitor
19         if (event.getLoggerName().contains("monitor")) {
20             return FilterReply.ACCEPT;
21         } 
22         return FilterReply.DENY;
23 
24     }
25 }

4. Use filter in configuration file appender

 1 <!-- Time scrolling output level by monitor Journal -->
 2 <appender name="file—monitor" class="ch.qos.logback.core.rolling.RollingFileAppender">
 3     <!-- Use custom filter -->
 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": Set the log name to monitor Log -->
15 <!-- additivity="false": Only at present appender Print in -->
16 <logger name="monitor" additivity="false">
17     
18     <!-- Add to appender -->
19     <appender-ref ref="file—monitor"/>  
20 </logger>  

Topics: PHP Java