2009-09-14 76 views
2

当使用日志设施时,常用的“经验法则”是什么? 例如记录规则

  • 每单位时间的速率限制消息X到Y消息Z?
  • 在记录相同类型的“新”故障消息之前,等待类型为T的最近成功消息?
+0

对不起,但您需要提供更多有关情况的更多信息。一些日志记录用于记录一切。一些仅用于特殊信息。还有很多其他因素涉及。也许你可以填补我们的情况,我们可以帮助更多。 – 2009-09-14 15:44:09

+0

我只是在寻找有关日志记录实践的专家建议。 – jldupont 2009-09-14 17:52:29

回答

1

如果必须丢弃消息,请丢弃不重要的消息。

如果您显示的是重要信息,请勿将其埋入大量不重要的信息中。

当消息级别被禁用/不需要时,不显示消息非常便宜。

使我们能够发现系统的当前状态而不必读取每条旧消息。

管理日志文件的大小(例如,多个文件而不是无限大小的文件),请注意填充磁盘。

考虑使用一个标准的输出格式/介质(例如SNMP,<small>或NT事件日志</small>),您可以查看和使用全功能的第三方工具来管理。

1
  • 尽你所能打印尽可能多的上下文。包括尽可能完整的错误信息。在程序或工作流程中包含确切位置(例如,“输入文件的错误处理行10029”与“错误处理输入文件”)

  • 当数据库查询失败时,请考虑打印格式良好的查询文本(例如,通常包含的Sybase错误轧液部分查询只)

  • 具有很好的格式,包括标记INFO/WARN/ERROR能力(或日志消息的水平),以方便grepping

  • 使用日志工具

    使用日志工具具有体面的时间戳能力。

  • 如您所述,请考虑卷。限制或捆绑消息。

+0

这对开发人员可见的日志很好;客户可见的日志应该更加端庄。特别是,文件名和行号不应该是客户可见的。至少,不在我们的(嵌入式,安全敏感)环境中。 – user47559 2009-09-14 18:15:56

1

我们限制重复消息。我们使用类似系统日志的类别&优先级层次结构,并且默认情况下只会记录指示警告和更高级别的消息。

如果事情发展到南方,我们可以调整该组件的日志记录,直到我们解决它。

2

我同意Jonathon,更多的上下文会有所帮助。有些事情要考虑的是:

  1. 如果事件日志失败,您是否允许事件发生?如果是的话,你有更多的选择,如果没有,那么当你坚持事件时,你需要记录交易块的事件部分
  2. 这些日志是否会被清理,或者它们是否持续了系统?如果是,那么你有很多选择。如果不是,那么你会想把它们放在一个数据库中。
  3. 日志中有多少数据?考虑索引和/或分区表。也想想你将如何访问日志。将事件记录在父对象上,而不是每个孩子。例如一个会计期刊,其中有很多子领域,它们列出了交易。而不是登录已批准交易的交易ID,请登录交易被批准的日记帐。

这些只是一些需要考虑的问题。

0
  • 不要登录密码!
  • 如果可能,尝试避免重复相同的消息,如果故障是 记录了很多次,直到系统从中恢复。只需记录“类型x的错误,从时间戳1到时间戳2发生n次”。
  • 不要永久保留您的日志,实施轮换策略(可能基于文件大小或时间段)。
  • 以一致的方式针对不同情况使用不同级别的日志。
0

记录足够详细的输入事件,您可以在调试/测试期间再次运行完全相同的事件序列。但是,你必须使用一些常识。记录每个鼠标移动事件可能是过度的,除非你有理由相信一系列鼠标移动事件会导致问题。