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>