2008-10-09 114 views
46

日志级别WARN,ERROR和FATAL非常清晰。但是什么时候是DEBUG和INFO?如何确定要使用的日志级别?

我已经看到一些在INFO级别上烦人地冗长的项目,但我也看到了过多支持DEBUG级别的代码。在这两种情况下,有用的信息都隐藏在噪音中。

确定日志级别的标准是什么?

回答

89

我不认为有任何硬性规定;使用log4j的型水平,我的“经验法则”是这样的:

  • FATAL:应用(或至少是一个线程)即将可怕的死亡。这是信息解释为什么这是发生的地方。
  • 错误:应用程序正在做的事情,它不应该。这不是用户错误('无效的搜索查询');这是一个断言失败,网络问题等,等等,可能是一个将中止当前操作
  • 警告:有关的事情,但不会导致操作中止;数据库池中的连接数越来越少,操作中出现异常但预期的超时等。我经常认为'WARN'是聚合中有用的东西;例如grep的,组,并计算他们得到了什么影响系统运行状况的图片
  • 信息:普通的日志记录是这样的应用程序的正常操作的一部分;诊断性内容,以便您可以回头说'这种广泛的操作发生的频率?',或'用户的数据如何进入这种状态?'
  • DEBUG:默认为关,能用于调试特定意想不到的问题被开启。您可以在这里记录关于关键方法参数或其他信息的详细信息,这些信息对于在代码的特定“有问题”的领域找到可能的问题很有用。
  • TRACE:“说真的,跆拳道是怎么回事我需要登录的每一句话我执行我发疯之前找到这个@#$ @荷兰国际集团的内存中断错误?!?!”

不是一成不变的,而是对我如何看待它的粗略想法。

5

想想谁需要使用每个级别。 在我的代码中,我保留DEBUG保留给开发人员输出,例如,输出只会帮助开发者。 VERBOSE用于需要大量信息的普通用户。 信息我用来正常显示重大事件(例如发送网页,检查重要的事情)。

失败WARN是很自我解释。

+0

我想很多INFO或WARN只会帮助开发者 – Casebash 2010-05-14 03:12:42

7

非正式我用这种层次,

  • DEBUG - 实际跟踪值
  • 信息 - 这是刚刚发生了 - 什么都不重要,只是一个标志
  • WARN - 一切的工作,但一些”不是个牛逼很是预期
  • 错误 - 出事了,将需要修复,但我们可以继续做其他(独立的)活动
  • FATAL - 相当严重的PROBL我们甚至不应该继续进行

我一般会发布与信息被记录,但只有当我知道日志文件实际审查(和大小不是问题),否则它是警告。

3

如果在邮件中计算了某些内容,则我的团队中使用debug,而info用于纯文本。所以实际上info会告诉你发生了什么,debug将显示正在发生的事情的值。

1

我往往针对对用户信息给他们,甚至没有警告消息。 DEBUG往往是开发人员使用的地方,我输出消息来帮助跟踪代码中的流量(还有变量的值)。

我也喜欢DEBUG的另一个层面(DEBUG2?),它给出了调试信息绝对bucketloads如所有缓冲区的十六进制转储等。

0

不需要DEBUG2级别。这就是'TRACE'的用途。 TRACE旨在成为绝对最低级别的日志记录,输出您可能想要查看的所有可能的信息。

避免信息泛滥,所以一般不建议启用整个项目跟踪级别的日志。而是使用'DEBUG'来查找有关该错误的一般信息以及它发生的位置(因此名称),然后仅在该组件上启用TRACE时,如果仍然无法解决该问题。