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

可能重复:
记录代码应该在哪里/哪个级别?
调试级别

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

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

任何提示将不胜感激。

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

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

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

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

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

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

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

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