首页 > 解决方案 > Log4j2 无法删除老化的日志文件

问题描述

我有以下 log4j2 配置文件。我希望它会删除 7 天前生成的日志文件。但它不起作用。任何人都可以帮助找出问题吗?

<Configuration status="trace">

    <Properties>
        <Property name="filters-packages">sun,java.lang,org.junit</Property>
        <Property name="logs-dir">/data/logs/app</Property>
        <Property name="pattern-subfix">%d{yyyy-MM-dd}.log</Property>
        <Property name="file-size">2000 MB</Property>
        <Property name="layout">%highlight{%d %-5p %t %c{1}.%M():%L - %m%n}%xEx{filters()}</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%highlight{%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %M() @%L - %msg%n}{FATAL=Bright Red, ERROR=Bright Magenta, WARN=Bright Yellow, INFO=Bright Green, DEBUG=Bright Cyan, TRACE=Bright White}"/>
        </Console>

        <RollingFile name="fileout-app" fileName="${logs-dir}/app.log" filePattern="${logs-dir}/app.log.%d{yyyy-MM-dd}">
            <PatternLayout pattern="${layout}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${logs-dir}" maxDepth="1">
                    <IfFileName glob="app.log.*" />
                    <IfLastModified age="7d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Logger name="com.abc.efg" level="INFO" additivity="false">
            <AppenderRef ref="fileout-app"/>
        </Logger>
        
        <Root level="INFO">
            <!--<appender-ref ref="ERROR" />-->
            <appender-ref ref="fileout-app"/>
            <appender-ref ref="Console"/>
        </Root>
    </Loggers>

</Configuration>

标签: log4j2

解决方案


对不起。配置文件中没有错误。问题是logs-dir我的容器中另一个目录的软链接。followLinks="true"这个参数解决了我的问题


推荐阅读