log4j2定期生成和删除过期日志文件的配置

<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="WARN" monitorInterval="300">   <!-- debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/"-->
    <properties>
        <property name="LOG_HOME">logs/kg</property>
        <property name="FILE_NAME">kg</property>
    </properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}:%M(%L)] - %msg%xEx%n"/>
        </Console>
        <RollingRandomAccessFile name="MyFile"
                                 fileName="${LOG_HOME}/${FILE_NAME}.log"
                                 filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd-HH}-%i.log">
            <PatternLayout
                    pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}:%M(%L)] - %msg%xEx%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>      <!--每1小时/分/... 生成一个文件, 时间依据filePattern的配置-->
                <SizeBasedTriggeringPolicy size="5 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="30">
                <Delete basePath="${LOG_HOME}/$${date:yyyy-MM}/" maxDepth="2">
                    <IfFileName glob="*.log" />
                    <!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
                    另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
                    <!--7天-->
                    <IfLastModified age="168H" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>
    </Appenders>

    <Loggers>
        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <logger name="org.springframework" level="INFO"/>
        <logger name="org.mybatis" level="INFO"/>
        <Logger name="mylog" level="debug" additivity="false">
            <AppenderRef ref="MyFile"/>
            <AppenderRef ref="Console"/>
        </Logger>
        <Root level="debug">
            <AppenderRef ref="MyFile"/>
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>

</Configuration>

作者:Nisus_Liu
链接:https://www.jianshu.com/p/ee075bfc7dff
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

注意:

filePattern定义的日志文件后缀精确的时间决定了定期生成日志文件. 精确到dd, 即%d{yyyy-MM-dd}, 则会每天生成一个文件, 精确到HH, 则会每时生成一个文件, …

Delete标签内决定了删除过期文件的规则. 需要注意这里的IfLastModified .age要和filePattern精确的时间一致, 否则貌似无效.
我这里日志文件会按日期放入子文件夹内, 所以要想统计总数, 需要递归统计, 故设置maxDepth=2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值