创建项目
项目名称:012-log4j2-demo
日志需要:每天生成日志文件,但是日志文件是有大小限制,当生成的日志文件超过指定的日志文件的大小,就会生成新的日志文件,那么之前的日志要进行封装或压缩。
编写日志控制文件
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="OFF">
<!--定义一个属性-->
<properties>
<property name="LOG_HOME">c:/logger</property>
</properties>
<Appenders>
<!--定义输出到控制台的日志-->
<Console name="console" target="SYSTEM_OUT">
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="[log4j2-demo] %-d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %c:%L - %m%n"/>
</Console>
<!--
日志需求:每天生成日志文件,当日志文件超过指定大小,那么生成新的日志文件,之前的日志文件需要进行压缩
-->
<RollingRandomAccessFile name="file" fileName="${LOG_HOME}/rollFile.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM-dd}/rollFile-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="[log4j2-demo] %-d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %c:%L - %m%n"/>
<!--
当日志附加器使用策略>1时,需要使用如下标签<Policies>
-->
<Policies>
<!--
interval:int类型,指两次封存动作之间的时间间隔
单位:以日志的命名的精度来确定单位,是filePattern属性的时间精度
modulate:boolean类型,说明是否对封存时间进行调制
时间精度以时来说,如果Modulate值为true,则封存时间将以0点为边界进行偏移计算。比如:interval=4hour,那么
假设上次封存日期时间为3:00,则下次封存时间为4:00,而不是7点
-->
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="2kb"/>
</Policies>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="console"/>
<AppenderRef ref="file"/>
</Root>
</Loggers>
</Configuration>
编写测试类