//1、依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.11.0</version>
</dependency>
//2、web.xml配置
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:log4j2.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
3、log4j2.xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="info" monitorInterval="60">
<Properties>
<Property name="APP_LOG_HOME">/home/logs</Property>
<Property name="LOG_BACKUP_DAYS">3d</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<!-- <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/> -->
<!-- 输出日志的格式 -->
<PatternLayout
pattern="[%d{yyyy-MM-dd HH:mm:ss} %-5p] [%t] {%c:%L}-%X{ThreadID}%m%n"/>
</Console>
<RollingFile name="info_appender" fileName="${APP_LOG_HOME}/info.log"
filePattern="${APP_LOG_HOME}/info.log.%d{yyyy-MM-dd}.log.gz">
<!-- 输出格式 -->
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss} %-5p] [%t] {%c:%L}-%X{ThreadID}%m%n"/>
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<Policies>
<!-- 每1天更新一次,此处查阅网上和官方示例中,都是以小时出现,我测试是以天为单位。(官方文档中说明按item类型是否是小时,但没找到在哪里设置item类型)另有其他各类型策略,请参阅官方文档 -->
<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
<!-- 此处为每个文件大小策略限制,使用它一般会在文件中filePattern采用%i模式 -->
<!-- <SizeBasedTriggeringPolicy size="128KB" /> -->
</Policies>
<!-- 最多备份30天以内的日志,此处为策略限制,Delete中可以按自己需要用正则表达式编写 -->
<DefaultRolloverStrategy>
<Delete basePath="${APP_LOG_HOME}" maxDepth="1">
<IfFileName glob="info.*.log*"/>
<IfLastModified age="${LOG_BACKUP_DAYS}"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<RollingFile name="error_appender" fileName="${APP_LOG_HOME}/error.log"
filePattern="${APP_LOG_HOME}/error.log.%d{yyyy-MM-dd}.log.gz">
<!-- 输出格式 -->
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss} %-5p] [%t] {%c:%L}-%X{ThreadID}%m%n"/>
<!--<Filters>-->
<!--<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>-->
<!--<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>-->
<!--</Filters>-->
<Filters>
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<Policies>
<!-- 每1天更新一次,此处查阅网上和官方示例中,都是以小时出现,我测试是以天为单位。(官方文档中说明按item类型是否是小时,但没找到在哪里设置item类型)另有其他各类型策略,请参阅官方文档 -->
<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
<!-- 此处为每个文件大小策略限制,使用它一般会在文件中filePattern采用%i模式 -->
<!-- <SizeBasedTriggeringPolicy size="128KB" /> -->
</Policies>
<!-- 最多备份30天以内的日志,此处为策略限制,Delete中可以按自己需要用正则表达式编写 -->
<DefaultRolloverStrategy>
<Delete basePath="${APP_LOG_HOME}" maxDepth="1">
<IfFileName glob="error.*.log*"/>
<IfLastModified age="${LOG_BACKUP_DAYS}"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<logger name="com.demo" level="debug" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="info_appender"/>
<AppenderRef ref="error_appender"/>
</logger>
<root level="warn">
<AppenderRef ref="Console"/>
<AppenderRef ref="info_appender"/>
<AppenderRef ref="error_appender"/>
</root>
</Loggers>
</configuration>