我现在正在为程序编写单例记录器,我想知道是否最好在每次登录时打开和关闭它,还是在创建单例时打开流并在终止时关闭它?程序?如果我要这样做,我将如何在终止时将其关闭?
一次打开文件的主要优点是性能。您可以节省open
每次调用的麻烦,并寻求到文件末尾进行追加;如果文件很大(某些日志通常是),则情况会变得更糟。
缺点是:
如果写入器中有一些缓冲(延迟写入),则您可能无法立即读取最后一个日志行。但是,可以通过在每次写入后刷新来解决此问题(您可能会损失一些性能,但这通常不相关)。
您不能同时从不同的进程写入同一日志。但是您可能不需要这个,并且,如果需要,打开和关闭解决方案仍然需要处理并发。
某些外部日志处理(通常是带有重命名的日志轮换)会出现问题。为此,您可能需要实现一些关闭和重新打开文件的信令。
通常,优点要超过缺点,因此一般规则是保持日志文件打开。但这取决于情况。
(正如其他答案所指出的那样,通常您宁愿使用一些标准的日志记录库,而不是自己执行该日志记录库。但是,尝试一下或至少考虑所有涉及的问题是有益的。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句