log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--设置log4j2的自身log级别为warn-->
<configuration status="Debug" monitorInterval="10">
<appenders>
<console name="Console">
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
</console>
<RollingRandomAccessFile name="RollingFileInfo" fileName="${web:rootDir}/logs/info.log"
filePattern="${web:rootDir}/logs/info/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="INFO"/>
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100KB"/>
</Policies>
<!-- 最多备份30天以内的日志,此处为策略限制,Delete中可以按自己需要用正则表达式编写 -->
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量,并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 -->
<CronTriggeringPolicy schedule="* * * * * ?"/>
<DefaultRolloverStrategy>
<Delete basePath="${web:rootDir}/logs/info" maxDepth="2">
<IfFileName glob="*/info-*.log" />
<IfLastModified age="7d" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="RollingFileWarn" fileName="${web:rootDir}/logs/warn.log"
filePattern="${web:rootDir}/logs/warn/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="WARN"/>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100KB"/>
</Policies>
<!-- 最多备份30天以内的日志,此处为策略限制,Delete中可以按自己需要用正则表达式编写 -->
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量,并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 -->
<CronTriggeringPolicy schedule="* * * * * ?"/>
<DefaultRolloverStrategy>
<Delete basePath="${web:rootDir}/logs/warn" maxDepth="2">
<IfFileName glob="*/warn-*.log" />
<IfLastModified age="7d" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="RollingFileError" immediateFlush="true" fileName="${web:rootDir}/logs/error.log"
filePattern="${web:rootDir}/logs/error/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="ERROR"/>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100KB"/>
</Policies>
<!-- 最多备份30天以内的日志,此处为策略限制,Delete中可以按自己需要用正则表达式编写 -->
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量,并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 -->
<CronTriggeringPolicy schedule="* * * * * ?"/>
<DefaultRolloverStrategy>
<Delete basePath="${web:rootDir}/logs/error" maxDepth="2">
<IfFileName glob="*/error-*.log" />
<IfLastModified age="7d" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="RollingFileDebug" immediateFlush="true" fileName="${web:rootDir}/logs/debug.log"
filePattern="${web:rootDir}/logs/debug/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="DEBUG"/>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100KB"/>
</Policies>
<!-- 最多备份30天以内的日志,此处为策略限制,Delete中可以按自己需要用正则表达式编写 -->
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量,并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 -->
<CronTriggeringPolicy schedule="* * * * * ?"/>
<DefaultRolloverStrategy>
<Delete basePath="${web:rootDir}/logs/debug" maxDepth="2">
<IfFileName glob="*/debug-*.log" />
<IfLastModified age="7d" />
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
</appenders>
<loggers>
<logger name="org.springframework" level="INFO"/>
<logger name="org.mybatis" level="DEBUG"/>
<root level="DEBUG">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
<appender-ref ref="RollingFileDebug"/>
</root>
</loggers>
</configuration>
NOTE:DefaultRolloverStrategy中的max默认为7,即i最大为7(如以上配置中,就是一天最多备份七个文件,超出了就删除最早的);i最大值最大可设置为30,代表最多30个文件
web.xml里加
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:log4j2.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
如果web.xml里之前有配置log4j,要先删除/注释
PS.log4j2配置字段意思与用法详见