gpt4 book ai didi

java - Log4j2 RollingFileManager OnStartupTriggeringPolicy 从不在启动时滚动文件

转载 作者:行者123 更新时间:2023-12-02 10:30:40 24 4
gpt4 key购买 nike

我试图让 log4j2 (V2.11.1) 在启动时滚动现有日志文件,然后再开始登录到新文件。我的配置如下。我使用的是 RollingFileManager 和 OnStartupTriggeringPolicy,minSize=0,根据文档,这应该足够了。

但是我发现在启动时,OnStartupTriggeringPolicyinitialize方法将日志文件的时间戳与JVM启动进行比较,如果日志文件时间在启动时间之后,则不会滚动文件。如果我单步执行代码,我会发现在进行检查时,文件时间始终晚于 JVM 启动时间,因为 log4j2 似乎已经在此时打开了要写入的文件。

public void initialize(RollingFileManager manager) {
if (manager.getFileTime() < JVM_START_TIME && manager.getFileSize() >= this.minSize) {
if (this.minSize == 0L) {
manager.setRenameEmptyFiles(true);
}

manager.skipFooter(true);
manager.rollover();
manager.skipFooter(false);
}
}

这是一个错误还是我只是做错了什么?

编辑:已向 Log4j2 团队 ( LOG4J2-2517 ) 提出错误报告。最初的讨论严重倾向于这实际上是一个错误。

log4j2.json:

{
"configuration": {
"appenders": {
"Console": {
"name": "Console",
"PatternLayout": {
"pattern": "%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%c{2}] [%t]%n[%p] : %m%n"
}
},
"RollingFile": {
"name": "RollingFile",
"fileName": "logs/orchestrator.log",
"filePattern": "logs/orchestrator-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz",
"append": false,
"PatternLayout": {
"pattern": "%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%c{2}] [%t]%n[%p] : %m%n"
},
"Policies": {
"OnStartupTriggeringPolicy": {
"minSize" : 0
},
"SizeBasedTriggeringPolicy": {
"size": "50 MB"
}
},
"DefaultRolloverStrategy": {
"max": "10"
}
}
},
"loggers": {
"root": {
"level": "info",
"AppenderRef": [
{"ref": "RollingFile", "level": "INFO"},
{"ref": "Console", "level": "ERROR"}
]
}
}
}
}

最佳答案

确认为bug ,已在尚未发布的 Log4j2 V2.11.2 中修复。

关于java - Log4j2 RollingFileManager OnStartupTriggeringPolicy 从不在启动时滚动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53632091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com