我正在考虑构建一个日志系统,该系统将日志语句推送到内部缓冲区,直到达到预定义的容量,然后一次性转储(刷新)整个缓冲区。
这是因为我喜欢在我的方法中撒播大量的TRACE语句(这样我就可以在每几行上看到发生了什么;至少对我来说更容易调试)。而且我担心,由于可能会有数百/数千个日志语句在各处触发,这样的大量I/O需求会拖慢我的程序。
“缓冲”记录器解决方案可能会缓解这种情况。
三个问题:
- 类似于这样的东西已经存在吗?不愿意重复造轮子,但在线搜索没有找到任何信息。
- 我想到了这样一个事实,即当程序意外停止(运行时异常等)并且记录器没有被刷新时,我很可能会失去日志语句。在这种情况下,我希望记录器覆盖finalize(),以便如果程序在其缓冲区中仍有项目的情况下终止,它可以在退出之前将它们刷新(发布)。有什么想法吗?
- 这是一个可怕的想法吗?如果是,为什么!
finalize()
,但也可能不会。这不是一个坏主意,只是我不确定它是否对仅在开发期间发生的事情有良好的投资回报率。 - Dave Newton