每个日志级别包含哪些信息?

时间:2011-02-02 11:51:40

标签: java logging

  

可能重复:
  Where/what level should logging code go?
  Debug Levels

是否存在有助于登录Java的约定,标准或广泛使用的指南?具体来说,包括在每个级别(详细,调试,等等)而不是实际的日志记录机制。

在每个日志级别都有许多指南,但没有一个是具体的;他们都很模糊,这使得“遵守命令”变得很难。

任何提示都将不胜感激。

3 个答案:

答案 0 :(得分:11)

这是个人解释,但我的(按照从最好到最高的顺序):

  • 跟踪 - 最好的日志记录级别。可用于记录仅与真实调试方案相关的非常具体的信息,例如,记录每个数据库访问或每个HTTP调用等。
  • 调试 - 主要信息可帮助您调试程序。例如,每次批处理例程清空其批处理或在磁盘上创建新文件等时都会记录日志。
  • 信息 - 常规应用程序流程,例如“正在启动应用程序”“连接到数据库”“注册.. 。“。简而言之,这些信息应该有助于任何观察者理解应用程序的一般用途。
  • 警告 - 警告可以恢复的错误。例如未能解析日期或使用不安全的例程。请注意,尽管应用程序可能提供了默认值,但我们仍应尽量遵守 fail fast 原则,而不是使用警告消息隐藏配置错误。
  • 错误 - 表示通常无法恢复的错误。如无法打开数据库连接。
  • 致命/严重<​​/ strong>用于记录应用程序无法恢复的错误,这可能会导致程序立即终止。

最后,由您决定最适合您的方式。就个人而言,我运行的大多数生产系统的日志记录级别为 Info ,我最感兴趣的是遵循应用程序主要逻辑,当然还要捕获所有警告/错误。

除了代码混乱之外,没有太多的日志记录。所有可以帮助您更好地重现或理解问题的记录都是良好的记录。在性能说明中,大多数日志记录系统(例如log4j)允许配置实际附加到物理日志的级别,这是一件好事。

答案 1 :(得分:0)

对于它的价值,我们使用以下日志级别:

  • DEBUG级别消息提供高度详细和/或特定的信息,仅对追踪问题有用。
  • 信息消息提供有关系统正在执行的操作的一般信息。 (例如,处理文件X)
  • 警告消息警告用户不理想的事情,但不应影响系统。 (例如,配置X错过了,使用默认值)
  • 错误消息告知用户出现了问题,但系统应该能够应对。 (例如连接丢失,但会再次尝试)
  • CRITICAL消息在发生不可恢复的错误时通知用户。 (即我即将中止当前任务或崩溃)

我认为日志级别最重要的是找出一个方案,记录它并坚持下去。尽管在程序之间使日志级别保持一致会很好,只要您在定义日志级别时使用常识,用户就可以容忍程序之间的一定程度的差异。

答案 2 :(得分:0)

简单记录如果您稍后回来需要阅读日志,那么您认为重要的是什么。这当然意味着你的Object.toStrings现在需要很好并且可读,而不是无法读取的垃圾堆。这也意味着你需要做一些明智的事情,如引用字符串等。