我正在阅读一些代码并比较我在生产日志文件内容中看到的内容,但我担心的是,我可能不会看到生产中的内容(是的,我知道......)
我希望看到一个来自log.info()调用的字符串,但它是在数据库更新之前,它可能是SQLException的罪魁祸首。
异常是否可能掩盖记录器输出? I.E.在刷新日志输出缓冲区之前执行已经终止?
如果不是这种情况,我需要找出其他原因,以便不写信息。
答案 0 :(得分:0)
不,不可能。当您使用log.into(),log.error(),log.debug(),log.wran(),log.fatal(),log.trace()方法写下内容时,它会保留要写入的内容日志文件。
要获得更多细节,您可以捕获异常并使用log.error()打印该堆栈跟踪。您可以轻松诊断问题。
答案 1 :(得分:0)
java.util.logging
日志记录框架使用关闭挂钩来确保在handlers
上调用flush()
方法。如果处理程序正确实现flush()方法以将缓存日志刷新到磁盘,它将起作用。随java api提供的处理程序确实实现了这一点。
可以在the source code中验证它是否使用了shutdown hooks。