Log4j2 createOnDemand="true" 不允许每天创建新文件

问题描述 投票:0回答:2

Log4j2 createOnDemand="true" 不允许每天创建新文件,尽管使用带有 TimeBasedTriggeringPolicy 的 RollingFile Appender。

下面是我的 log4j2.xml 文件。 我有两个附加程序,一个用于所有日志,另一个用于自定义目的,仅需要根据需要生成,但 createOnDemand 覆盖了日志的滚动性质,并且不允许为该日志创建新的日志文件自定义日志。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <RollingFile name="App" 
                fileName="app.log" 
                filePattern="app.%d{yyyy-MM-dd}.log">
            <PatternLayout pattern="[%t] %d{yyyy-MM-dd HH:mm:ss,SSS zzz} %-5p %l - %m%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" />
            </Policies>
        </RollingFile>
        <RollingFile name="custom"
                 fileName="appCustom.log"
                 filePattern="appCustom.%d{yyyy-MM-dd-HH-mm}.log"
                 createOnDemand="true">
        <PatternLayout pattern="[%t] %d{yyyy-MM-dd HH:mm:ss,SSS zzz} %-5p %l - %m%n" />
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" />
        </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="AppLogger" level="info" additivity="false">
                <AppenderRef ref="App"/>
            </Logger>
        <Logger name="customLogger" level="info" additivity="false">
            <AppenderRef ref="custom"/>
        </Logger>
        <Root level="info">
                <AppenderRef ref="file" />
        </Root>
    </Loggers>
</Configuration>
java log4j2 java.util.logging
2个回答
1
投票

我已经找到了上述问题的解决方案。 这是 lo4j2 中现有的错误,已在版本中修复 - 2.13.1

以下是链接:

https://issues.apache.org/jira/browse/LOG4J2-2759

https://logging.apache.org/log4j/2.x/changes-report.html#a2.13.3

我使用的是2.11.0

升级解决了我的问题。


0
投票

如果

fileName
包含一个或多个目录且其中之一不存在,例如,也不会创建该文件。如果
<RollingFile fileName="logs/appCustom.log"/>
不存在,则
logs
失败。

目录永远不会创建,您需要自己处理。确保您注意预期目录所在的工作目录*。例如,对于具有多个包含的 Gradle 项目的每个子项目,它都会发生变化。因此,您在每个包含的项目中都需要

logs

确保从 git 中排除

logs


* 我猜这是当前的工作目录。在关键点上没有提到任何内容,我无法检查完整的40页附加程序文档

© www.soinside.com 2019 - 2024. All rights reserved.