【发布时间】:2015-08-06 05:42:06
【问题描述】:
我正在使用 Spring,并在终止时让 @PreDestroy 清理 bean。我不明白为什么日志记录有时会随机成功,而另一些则失败。
// Using Log4j2
Logger log = LogManager.getLogger(MyClass.class);
@PreDestroy
public void close() {
log.warn("Test");
}
有时我什么也得不到(没有记录“测试”),有时我会得到:
[13:48:44] INFO MyClass: Test
如果我在 close() 方法中包含System.out.println("Is this run?");,它将始终打印。
我实际上不确定发生了什么。我不知道是不是因为JVM正在关闭并且记录器被杀死......但我认为这会引发某种异常?
请注意,日志记录到文件+标准输出,我不知道这是否会影响任何事情。其他无数行代码的日志记录工作正常,但不是这个。
注意:如果它最终成为这个特定的库,我愿意切换日志库。
编辑:MyClass 将是 spring.xml 文档中的一个 bean。
【问题讨论】:
-
你在使用异步日志吗?
-
@KErlandsson 我不知道有这样的选择,我很确定我没有。谷歌搜索后,我可以告诉你,我的配置文件中没有任何地方
"immediateFlush="false"行,更不用说任何地方的命令了,如果有帮助的话。 -
你的bean的作用域是什么?
-
@Skizzo 是单身