【发布时间】:2015-12-16 23:40:23
【问题描述】:
我正在尝试编写一个非常简单的 Java 日志记录类,它可以写入日志文件,以便我可以在其他项目中重用它。我扩展了PrintWriter 类,以便在写入之前检测日志文件是否打开。
当用户完成记录后,他们必须在记录对象上调用.close() 来关闭文件。当仅集成到单类应用程序中时,这没什么大不了的,但现在我试图将此记录器类集成到几个不同的父类和子类中,它们都将引用同一个日志文件,并且不会关闭一个参考,我将无法打开另一个来自不同班级的参考。
每次记录某些内容时调用.open()、.write(msg)、.close() 会不会很糟糕? 将消除手动 open 和 close 记录器的需要。或者有更好的解决方案吗?
我为 C++ 找到了 this similar question,但唯一的答案是“根据我的经验......”我正在寻找更深入的答案。
【问题讨论】:
-
我认为这本质上是基于意见的,但通常打开和关闭文件(或不断重新创建对象)是不好的做法。 OTOH 日志记录往往是人们相对很少做的事情,因此尝试优化它并不总是有意义的。如果您遇到问题,请使用分析器。如果您没有问题,“如果没有损坏,请不要修复它。”
标签: java logging filewriter printwriter bufferedwriter