【问题标题】:Log4j2 rolling file overwrites existing logLog4j2 滚动文件覆盖现有日志
【发布时间】:2019-03-17 07:06:06
【问题描述】:

我有以下 Log4j2 的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="error" name="D3Hooks" packages="">
    <Appenders>
        <RollingFile append="true" name="RollingFile" fileName="D:\temp\logs\hooks.log" filePattern="hooks.log.%d{dd-MM-yyyy}.log">
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
            <DefaultRolloverStrategy max="30"/>
            <PatternLayout pattern="%d{dd-MM-yyyy HH:mm:ss} %level %c.%m %ex{full} %n"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="trace">
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

我对这个配置的期望是每天创建一个新的日志文件并保留 30 个日志文件。相反,每天只有一个日志文件被覆盖。我究竟做错了什么?

【问题讨论】:

    标签: java logging log4j2


    【解决方案1】:

    对于 TimeBasedTriggeringPolicy,您应该设置 interval="1" 和 modulate="true"。

    另见Time based triggering policy in log4j2

    【讨论】:

    • 我刚刚试了一下,现在日志附加到现有文件中。
    • 抱歉间隔应该是1而不是24。
    【解决方案2】:
    <PatternLayout pattern="%d{dd-MM-yyyy HH:mm:ss} %level %c.%m %ex{full} %n"/>
            </RollingFile>
    

    当 pattern="%d{yyyy-MM-dd} 的模式布局时,日志文件将每天创建 1 个间隔设置等于 1 的文件。因为间隔取决于日志文件名格式。如果文件名有类似HH:mm:ss 的东西,它会每秒创建一个文件。

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      相关资源
      最近更新 更多