log4j.xml配置文件介绍:https://www.cnblogs.com/new-life/p/9246143.html
通过查看源码知道log4j 2.x版本是默认支持按天进行分割日志信息的,只需简单配置就可以,如下如所示:
以下是我的配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration status="WARN" scan="true" scanPeriod="30 seconds">
<!--全局参数-->
<Properties>
<Property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %C{1} [%L] -| %msg%n</Property>
<Property name="date_pattern">%d{yyyy-MM-dd}</Property>
<Property name="log_home">D:/data/log</Property>
<Property name="application_name">log</Property>
</Properties>
<Loggers>
<Logger name="com" level="info" includeLocation="true" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFileInfo"/>
</Logger>
<Logger name="org" level="info" includeLocation="true" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFileInfo"/>
</Logger>
<Root level="debug">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFileInfo"/>
</Root>
</Loggers>
<Appenders>
<!-- 输出到控制台 -->
<Console name="Console" target="SYSTEM_OUT">
<!-- 需要记录的级别 -->
<PatternLayout pattern="${pattern}"/>
</Console>
<!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileInfo" fileName="${log_home}/${application_name}.log"
filePattern="${log_home}/$${date:yyyy-MM}/${application_name}_${date_pattern}_%i.log.gz">
<!--控制台只输出info及以上级别的信息(onMatch),其他的直接拒绝(onMismatch),根据这个可以特殊定制化-->
<!--<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>-->
<PatternLayout>
<Pattern>${pattern}</Pattern> <!--定义日志模板,输出的格式-->
</PatternLayout>
<Policies>
<!--按天进行分割日志-->
<TimeBasedTriggeringPolicy/>
<!--按文件占用空间进行分割日志-->
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
</RollingFile>
</Appenders>
</configuration>