相关疑难解决方法(0)

如何使用Log4j2登录关闭钩子?

Log4j2还使用关闭挂钩来结束它的服务.但是我当然希望在我的应用程序的整个生命周期中记录 - 包括关闭.使用Log4j这没问题.现在似乎不可能.记录关闭,而我的应用程序仍在处理它.有人对我有什么希望吗?

最好的问候马丁

java logging application-shutdown log4j2

13
推荐指数
2
解决办法
1万
查看次数

Spring 的 @PreDestroy 导致随机记录而不记录

我正在使用 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。

java logging spring

5
推荐指数
1
解决办法
1782
查看次数

标签 统计

java ×2

logging ×2

application-shutdown ×1

log4j2 ×1

spring ×1