java.util.logging.XMLFormatter中有一个名为getTail()的方法,该方法可写入物理日志文件的最后一行。它只是写
</log>
一条线上。
有谁知道如何/何时调用getTail()?我从未在自己的代码中调用过它,无论如何它总是写到最后一行。突然之间,事实并非如此。我显然已经弄坏了一些东西,但是如果我能想到自己所做的事情或如何解决这个问题,我会很惊讶。我的日志文件已写入,但无法打开。伴随文件,似乎是一个锁,可以确保这一点。 (如果日志文件名为Fuzz.log.xml,则另一个文件名为Fuzz.log.xml.lck,文件大小为0。如果删除该文件,则可以再次编辑日志文件,除了可以(它缺少最终的日志标签。)我只是希望日志记录代码再次为我编写该标签,以便我可以打开日志而无需删除锁定文件并手动添加磁贴。
我该怎么做才能使getTail()无法正常工作?
最佳答案
通常,我希望JDK Logging Framework能够处理流处理。如果查看“ getTail()”的调用位置,则会看到它是作为StreamHandler.flushAndClose()的一部分调用的,这主要是从StreamHandler.close()调用的。
因此,只要正确关闭了日志功能的流,即当应用程序正常终止时,就会写尾巴。如果应用程序崩溃或被杀死,则可能没有机会正确关闭文件。
观察这些事物的最好方法可能是使用Eclipse,并确保“ Java->已安装的JRE”下的“首选项”中提供了JDK Source,然后可以使用所有Eclipse浏览功能来查看事物的连接位置。
关于java - XMLFormatter中的getTail()方法如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9623932/