Log4j2还使用关闭挂钩来结束它的服务.但是我当然希望在我的应用程序的整个生命周期中记录 - 包括关闭.使用Log4j这没问题.现在似乎不可能.记录关闭,而我的应用程序仍在处理它.有人对我有什么希望吗?
最好的问候马丁
我正在使用 Spring,并且在终止时我让 @PreDestroy 清理 bean。我不明白为什么随机记录有时会成功,而在其他情况下会失败。
// Using Log4j2
Logger log = LogManager.getLogger(MyClass.class);
@PreDestroy
public void close() {
log.warn("Test");
}
Run Code Online (Sandbox Code Playgroud)
有时我什么也得不到(没有记录“测试”),有时我会得到:
[13:48:44] INFO MyClass: Test
Run Code Online (Sandbox Code Playgroud)
如果我包含System.out.println("Is this run?");在 close() 方法中,它将始终打印。
我实际上不确定发生了什么。我不知道是不是因为 JVM 正在关闭并且记录器被杀死......但我认为这会引发某种异常?
请注意,日志记录同时记录到文件 + 标准输出中,我不知道这是否会影响任何事情。日志记录适用于其他无数的数千行代码,但不是这个。
注意:如果它最终成为这个特定的库,我愿意切换日志库。
编辑: MyClass 将是 spring.xml 文档中的一个 bean。