0

我试图让 log4j2 写入名称为 YYYYmmdd-HHMMSS.log 的日志文件,但在我们有一个良好的系统时间(> 1986 年)之前不要开始写入文件。我有一个在启动的系统上运行的应用程序,需要一段时间才能获得正确的时间;在那之前,系统认为它回到了 1970 年,写一个带有错误日期的日志文件真的没有意义。

使用自定义过滤器,我可以让 FileAppender 在设置系统时间之前不写入任何事件。在自定义过滤器(createOnDemand="true")传递第一个事件之前,我可以让 FileAppender 不打开文件。使用Log4J2 - 在运行时分配文件附加程序文件名,我可以获得名为 YYYYmmdd-HHMMSS.log 的文件,但配置 XML 中的 YYYYmmdd-HHMMSS.log 似乎在 log4j2 初始化时(而不是打开文件时)得到评估,所以我的文件名仍然是 19700101-000000.log。

有没有办法将 log4j2 FileAppender 的名称评估推迟到文件实际打开?或者,是否有一种偷偷摸摸的方法来使用 RollingFileAppender 来做到这一点?(我看不到更改当前文件的文件名的方法,只有旧文件)

我可以做一个自定义附加程序(FileAppender/FileManager 并没有那么长),但如果可能的话,我会尽量避免这种情况。

4

1 回答 1

0

在 log4j2 邮件列表上得到了答案。感谢 Ralph Goers(log4j2 开发人员之一)。使用过滤的 RoutingAppender 来延迟文件附加程序的创建。

https://lists.apache.org/thread.html/rbf909f616a053f8c34733801b4977f389a31169ffcdcd3748d7873df%40%3Clog4j-user.logging.apache.org%3E

于 2020-02-05T08:13:50.763 回答