记录日志到文件还是事件查看器?

10

我在想记录信息的“正确”方法是什么;记录到文件还是事件查看器中的特殊日志?

我喜欢记录到文件中,因为我可以使用滚动式平面文件监听器并查看每天的新日志,在事件查看器中,我只能一次查看一个消息 - 而在文件中,我可以更轻松地浏览整天的日志。我的同事认为文件只会占用空间,他喜欢将警告、错误和信息消息都放在同一个位置。你觉得呢?有没有偏好的方法?如果有,为什么?

另外,这些方法中存在任何并发问题吗?我读过entlib是线程安全的,并且如果监听器不是线程安全的,则会生成Monitor.Enter,但我想确保(我们只是使用Logger.Write)。我们正在使用entlib 3.1。

提前谢谢。


1
log4net 对我来说很有效,然后您可以根据特定的使用/安装自定义目标。我也喜欢每日文件! - kenny
6个回答

5
这里是我在记录信息时使用的规则。
事件日志(如果您当然可以访问) - 我们总是记录未处理的异常 - 大多数情况下,我们记录错误或致命错误 - 在某些情况下,我们记录警告 - 在一些非常罕见的情况下,我们记录信息 - 我们永远不会记录无用的一般性消息,如:“我在这里,嘻嘻哈哈”
日志文件 - 一般规则,我们记录所有内容,但可以选择要使用的级别或过滤器类型来降低记录的消息量
事件日志始终是一个不错的选项,因为它绑定到WMI。这样像Open View之类的产品就可以监视并警报运营商是否出了问题。但是,要保持最少的消息,因为它很慢,在每个消息上有尺寸限制并且它的条目限制很容易就会填满事件日志,并且您的应用程序必须处理可怕的“事件日志已满”异常:)
希望这有所帮助...

4

没有“正确”的方法。这取决于您的要求。

您喜欢查看平面文件,但每天您真正能够阅读多少行(数千行)?

您似乎需要一个计划(策略),并且应该涉及一些工具。问问自己,您会多快注意到日志中的异常情况?以及正常情况的缺失?

事件日志需要更多的工作/开销,但是可以通过一些工具轻松地远程监视(多个服务器)。如果您仅使用手动检查,请不要费心。


谢谢,你说得对,我不会注意到那个问题,是的 - 目前我们只使用手动检查。关于性能方面呢?并发问题呢? - Rita

2

在企业应用程序中,有不同类型的日志,例如 -

  1. 活动日志 - 技术日志,用于仪器化过程并有助于调试。
  2. 审计日志 - 用于审计目的的日志。在某些情况下,这些日志的可用性是法律要求。

如何存储:

  1. 就审计日志或任何包含敏感信息的日志而言,它们应该存储在数据库中,以便安全地存储。

  2. 对于活动日志,我的首选是文件。但我们还应该有不同的日志级别,例如错误、信息、详细等,这些应该是可配置的。这将使得在不需要记录时节省空间和时间。

  3. 只有在无法写入文件时才应写入事件日志。


1

考虑询问您的客户管理员或技术支持人员希望将日志放置在何处。

关于线程安全性,是的,EntLib是线程安全的。


0
我建议使用事件查看器,但在您没有管理员权限或特定访问事件查看器的情况下,记录到普通文件可能是更好的选择。

0

我更喜欢将日志记录到数据库中,这样我就可以对我的日志进行分析,并生成有关发生错误的统计和趋势,并修复最频繁的错误。

对于外部客户,我使用名为async的Web服务来报告错误。(我在其中吞咽了任何异常,以便任何日志记录错误都不会影响客户端 - 尽管我使用log4net和L4NDash从未遇到过任何问题)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接