我试图让 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 并没有那么长),但如果可能的话,我会尽量避免这种情况。