SLF4J+LOG4J2 日志分级输出
依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.32</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.2</version>
</dependency>
分级输出
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="logFilePath">F://logs</Property>
<Property name="logFileName">allLogs.log</Property>
<Property name="Pattern">[%d{HH:mm:ss.SSS}] [%-5level] [类:%class{36}] [行数:%L] [方法:%M] -[错误信息:%msg]%n</Property>
</Properties>
<appenders>
<console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${Pattern}"/>
<Filters>
<ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
</console>
<RandomAccessFile name="accessFile" fileName="${logFilePath}/${logFileName}" append="true">
<PatternLayout pattern="${Pattern}"/>
</RandomAccessFile>
<RollingFile name="RollingFileInfo" fileName="${logFilePath}/INFO/info.log"
filePattern="${logFilePath}/INFO/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"
append="true">
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="${Pattern}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="25"/>
</RollingFile>
<RollingFile name="RollingFileWarn" fileName="${logFilePath}/WARN/warn.log"
filePattern="${logFilePath}/WARN/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"
append="true">
<Filters>
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="${Pattern}"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="25"/>
</RollingFile>
<RollingFile name="RollingFileError" fileName="${logFilePath}/ERROR/error.log"
filePattern="${logFilePath}/ERROR/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"
append="true">
<Filters>
<ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="${Pattern}"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="25"/>
</RollingFile>
<RollingFile name="RollingFileDebug" fileName="${logFilePath}/DEBUG/debug.log"
filePattern="${logFilePath}/DEBUG/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"
append="true">
<Filters>
<ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="${Pattern}"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="25"/>
</RollingFile>
</appenders>
<loggers>
<logger name="org.springframework" level="INFO"></logger>
<logger name="org.mybatis" level="INFO"></logger>
<root level="debug">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
<appender-ref ref="RollingFileDebug"/>
<appender-ref ref="accessFile"/>
</root>
<AsyncLogger name="AsyncLogger" level="debug" includeLocation="true" additivity="false">
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
<appender-ref ref="RollingFileDebug"/>
<appender-ref ref="accessFile"/>
</AsyncLogger>
</loggers>
</configuration>