pom包:
<properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<junit.version>4.12</junit.version>
<servlet.version>3.1.0</servlet.version>
<slf4j.version>1.6.4</slf4j.version>
<log4j2.version>2.8.2</log4j2.version>
<jdk.version>1.8</jdk.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-jcl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
</dependencies>
log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
<Properties>
<!--定义变量-->
<Property name="filename" >${sys:catalina.home}/logs/chronos_r/chronos_r.log</Property>
<Property name="filenameError">${sys:catalina.home}/logs/chronos_r/chronos_r_error.log</Property>
</Properties>
<Appenders>
<!--控制台输出-->
<Console name="STDOUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %l - %msg%n"/>
</Console>
<!--入文件-->
<RollingFile name="RollingFile" fileName="${filename}"
filePattern="${catalina.home}/logs/chronos_r/${date:yyyy-MM}/chronos_r-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d %-5level [%t]%l - %msg%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="200 MB"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<!--自动删除超过120天的日志压缩文件-->
<DefaultRolloverStrategy>
<Delete basePath="${baseDir}" maxDepth="2">
<IfFileName glob="*/chronos_r-*.log.gz"/>
<IfLastModified age="120d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<!--错误日志入文件-->
<RollingFile name="RollingFileError" fileName="${filenameError}"
filePattern="${catalina.home}/logs/chronos_r/${date:yyyy-MM}/chronos_r_error-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d %-5level [%t]%l - %msg%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="200 MB"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<!--自动删除超过120天的日志压缩文件-->
<DefaultRolloverStrategy>
<Delete basePath="${baseDir}" maxDepth="2">
<IfFileName glob="*/chronos_r_error-*.log.gz"/>
<IfLastModified age="120d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<!-- myibatis log configure -->
<logger name="com.apache.ibatis" level="INFO"/>
<logger name="org.mybatis.spring" level="DEBUG"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<!-- 减少部分debug日志 -->
<logger name="druid.sql" level="INFO"/>
<logger name="org.apache.shiro" level="INFO"/>
<logger name="org.mybatis.spring" level="INFO"/>
<logger name="org.springframework" level="INFO"/>
<logger name="org.springframework.context" level="WARN"/>
<logger name="org.springframework.beans" level="WARN"/>
<logger name="com.baomidou.mybatisplus" level="INFO"/>
<logger name="org.apache.ibatis.io" level="INFO"/>
<logger name="org.apache.velocity" level="INFO"/>
<logger name="org.hibernate.validator" level="INFO"/>
<!-- cache INFO -->
<logger name="net.sf.ehcache" level="INFO"/>
<logger name="org.springframework.cache" level="INFO"/>
<logger name="com.rz.commons.shiro.cache" level="INFO"/>
<!-- 业务debug日志 -->
<logger name="com.rz" level="DEBUG"/>
<!--采用异步输出日志-->
<AsyncLogger name="com.rz" level="INFO">
<!--写入info级别-->
<AppenderRef ref="RollingFile"/>
<!--写入error级别-->
<AppenderRef ref="RollingFileError" level="ERROR"/>
</AsyncLogger>
<Root level="TRACE">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="RollingFile" />
<AppenderRef ref="RollingFileError" level="ERROR"/>
</Root>
</Loggers>
</Configuration>
注意点: 获取tomcat根目录语法为: ${sys:catalina.home} 非 ${catalina.home}。