【问题标题】:Best practices for logging on top of logging levels在日志级别上进行日志记录的最佳实践
【发布时间】:2009-12-10 05:20:42
【问题描述】:

一般情况下,可以切换日志级别以获得不同级别的详细日志。通常最低级别的日志通常可以帮助人们识别代码的哪个区域可能是错误的。为了进一步调试,通常会提高调试级别以获取更多信息。但是,这会导致不必要的大量与问题无关的日志。

问题是:在这个问题上的最佳实践是什么?定义日志的另一个维度?通过逻辑区域,方法还是其他?

编辑: 这来自一个真实的项目,其中应用程序部署在客户环境中,当出现问题时,日志是他们发送调试的东西,他们肯定会讨厌发送大量日志,或者自己进行分析/解析:通常他们是非技术客户。我想这与在这种情况下如何管理日志记录效率的问题有关。如果打开另一个线程更合适,请发表评论。谢谢。

【问题讨论】:

    标签: logging


    【解决方案1】:

    您可以为应用程序的不同部分使用不同的侦听器。但可能您可以使用的最好的东西是Microsoft Log Parser,它使您能够对您的日志文件运行查询,例如您可以对文本日志文件中的数据执行 SELECT。看看吧,它确实是一个相当强大的工具。

    【讨论】:

      【解决方案2】:

      如果您有大量日志,您可以按功能区域将它们分开,这就是NHibernate 使用log4net 所做的。示例:

      NHiberate(根)
      NHibernate.Loader
      NHibernate.Cache
      NHiberante.SQL
      ...

      还可以使用像log4j/net 这样的好库,您可以使用滚动日志文件附加程序,您可以轻松配置它以不填满硬盘驱动器。例如,您可以将其配置为生成一个最大 10MB 的日志文件,然后最多滚动到另一个文件 10 次,然后返回到第一个文件并覆盖它。

      【讨论】:

        【解决方案3】:

        您已经提到了按级别记录。以下是 java.util.logging 包提供的logging levels,它对于根据需要(趋势与调试)控制日志消息量非常有效。

        日志记录的另一个维度是按事件记录并将这些事件分类到某种相当浅的层次结构中。查看logging for the purposes of analysis 上的这篇文章,了解更多信息,例如使用 Scribe 和 Hadoop。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-11-02
          • 1970-01-01
          • 1970-01-01
          • 2018-03-27
          • 2021-08-05
          • 2010-10-08
          • 1970-01-01
          相关资源
          最近更新 更多