pom.xml
<properties >
<project.build.sourceEncoding > UTF-8</project.build.sourceEncoding >
<log4j2.version > 2.6.2</log4j2.version >
</properties >
<dependencies >
<dependency >
<groupId > org.apache.logging.log4j</groupId >
<artifactId > log4j-core</artifactId >
<version > ${log4j2.version}</version >
</dependency >
<dependency >
<groupId > org.apache.logging.log4j</groupId >
<artifactId > log4j-api</artifactId >
<version > ${log4j2.version}</version >
</dependency >
</dependencies >
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status ="WARN" monitorInterval ="30" >
<Properties >
<Property name ="LOG_HOME" > C:\\Users\\Administrator\\IdeaProjects\\spring-boot-test\\logs</Property >
<property name ="ERROR_LOG_FILE_NAME" > C:\\Users\\Administrator\\IdeaProjects\\spring-boot-test\\logs\\error</property >
<property name ="WARN_LOG_FILE_NAME" > C:\\Users\\Administrator\\IdeaProjects\\spring-boot-test\\logs\\warn</property >
<property name ="PATTERN" > %d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%n</property >
</Properties >
<Appenders >
<Console name ="Console" target ="SYSTEM_OUT" >
<ThresholdFilter level ="trace" onMatch ="ACCEPT"
onMismatch ="DENY" />
<PatternLayout
pattern ="${PATTERN}" />
</Console >
<File name ="log" fileName ="logs/test.log" append ="false" >
<PatternLayout
pattern ="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</File >
<RollingFile name ="RollingFileInfo" fileName ="${LOG_HOME}/info.log"
filePattern ="${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log" >
<ThresholdFilter level ="info" onMatch ="ACCEPT"
onMismatch ="DENY" />
<PatternLayout pattern ="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
<Policies >
<TimeBasedTriggeringPolicy interval ="1" modulate ="true" />
</Policies >
</RollingFile >
<RollingFile name ="RollingFileWarn" fileName ="${WARN_LOG_FILE_NAME}/warn.log"
filePattern ="${WARN_LOG_FILE_NAME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log" >
<ThresholdFilter level ="warn" onMatch ="ACCEPT"
onMismatch ="DENY" />
<PatternLayout pattern ="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
<Policies >
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size ="2 kB" />
</Policies >
<DefaultRolloverStrategy max ="20" />
</RollingFile >
<RollingFile name ="RollingFileError" fileName ="${ERROR_LOG_FILE_NAME}/error.log"
filePattern ="${ERROR_LOG_FILE_NAME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd-HH-mm}-%i.log" >
<ThresholdFilter level ="error" onMatch ="ACCEPT"
onMismatch ="DENY" />
<PatternLayout pattern ="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
<Policies >
<TimeBasedTriggeringPolicy interval ="1" modulate ="true" />
</Policies >
</RollingFile >
</Appenders >
<Loggers >
<logger name ="org.springframework" level ="INFO" > </logger >
<logger name ="org.mybatis" level ="INFO" > </logger >
<logger name ="org.springframework.core" level ="info" />
<logger name ="org.springframework.beans" level ="info" />
<logger name ="org.springframework.context" level ="info" />
<logger name ="org.springframework.web" level ="info" />
<logger name ="org.jboss.netty" level ="warn" />
<logger name ="org.apache.http" level ="warn" />
<root level ="all" >
<appender-ref ref ="Console" />
<appender-ref ref ="RollingFileInfo" />
<appender-ref ref ="RollingFileWarn" />
<appender-ref ref ="RollingFileError" />
</root >
</Loggers >
</Configuration >
TestMain.java
import org.apache .logging .log 4j.LogManager
import org.apache .logging .log 4j.Logger
public class TestMain {
private static Logger log = LogManager.getLogger (TestMain.class )
public static void main(String[] args) {
log.debug ("this is debug" )
log.warn ("this is warn" )
log.info ("this is info" )
log.error ("this is error" )
log.trace ("this is trace" )
}
}