程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2022-06-19 23:49     阅读(1177)     评论(0)     点赞(23)     收藏(2)


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 并确保 JDK Source 在“Java -> Installed JREs”下的 Preferences 中可用,然后您可以使用所有 Eclipse 浏览功能来查看连接的位置。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/457443/5f9f7e3e46c87927022a/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

23 0
收藏该文
已收藏

评论内容:(最多支持255个字符)