gpt4 book ai didi

java - XMLFormatter 中的 getTail() 方法如何工作?

转载 作者:行者123 更新时间:2023-11-29 09:15:39 24 4
gpt4 key购买 nike

java.util.logging.XMLFormatter 中有一个名为 getTail() 的方法,它会写入物理日志文件的最后一行。它只是写

</log> 

单独一行。

有谁知道如何/何时调用 getTail()?我从来没有在自己的代码中调用它,而且它总是写最后一行。现在,突然之间,不是了。我显然已经破坏了一些东西,但如果我能想到我做了什么或如何解决这个问题,我就该死了。我的日志文件已写入,但无法打开。一个似乎是锁的伴随文件确保了这一点。 (如果日志文件名为 Fuzz.log.xml,则另一个文件将称为 Fuzz.log.xml.lck,文件大小为 0。如果删除该文件,我可以再次编辑我的日志文件,这很好,除了它缺少最后的日志标签。)我只希望日志记录代码再次为我编写该标签,这样我就可以打开日志而无需删除锁定文件并手动添加磁贴。

我可以做什么愚蠢的事情来阻止 getTail() 工作?

最佳答案

通常我希望 JDK 日志记录框架负责流处理。如果您查看“getTail()”的调用位置,您会发现它是作为 StreamHandler.flushAndClose() 的一部分被调用的,这主要是从 StreamHandler.close() 调用的。

因此,只要日志功能的流正确关闭,即应用程序正常终止时,就会写入尾部。如果应用程序崩溃或终止,它可能没有机会正确关闭文件。

查看这些东西的最佳方法可能是使用 Eclipse 并确保 JDK 源在“Java -> Installed JREs”下的首选项中可用,然后您可以使用所有 Eclipse 浏览功能来查看东西在哪里已连接。

关于java - XMLFormatter 中的 getTail() 方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9623932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com