1.Log4j中带有日期的文件名
<RollingFile name="APP" fileName="application-${date:yyyy-MM-dd}.log" />
2.异步写日志、文件名格式化、格式%i 占位符初始化值等
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="120">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n"/>
</Console>
<RollingFile name="COMM_LOG" fileName="/logs/xxx-${date:yyyyMMdd}-00001.log"
filePattern="logs/xxx-%d{yyyyMMdd}-%05i.log">
<!-- 控制日志打印的级别-->
<LevelRangeFilter minLevel="INFO" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 日志输出格式 X{PID}从线程中取出 -->
<PatternLayout>
<Pattern>[%d]%p|%uuid||%X{PID}|%X{ThreadId}|%X{COST}|%m %n</Pattern>
</PatternLayout>
<!--每当日志生成超过1天,或者大小超过20MB,就生成新的日志文件进行滚动归档-->
<Policies>
<SizeBasedTriggeringPolicy size="20MB"/>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<!--min= 2 指的是i的初始值 -->
<DefaultRolloverStrategy max="2" modulate="true"/>
</RollingFile>
<!-- 异步写日志 -->
<Async name="COMM_LOG_ASYNC">
<appender-ref ref="COMM_LOG"/>
</Async>
</Appenders>
<Loggers>
<Root level="INFO">
<appender-ref ref="Console"/>
<appender-ref ref="COMM_LOG_ASYNC"/>
</Root>
</Loggers>
</Configuration>