如何在 Java 中使用日志级别

2022-08-31 17:14:34

我正在开发一个应用程序,我需要使用记录器功能。我读过不同级别的记录器,它们是:

  • 严重(最高)
  • 警告
  • 信息
  • 配置
  • 更好
  • 最好

我无法理解每个日志记录级别的用法。

有人可以给我一个很好的例子来展示所有的日志记录级别及其用法吗?


答案 1

一般来说,你不需要所有这些级别,严重,警告,信息,罚款可能就足够了。我们使用的是 Log4J(不是直接使用 java.util.logging)和以下级别(它们的名称可能与其他日志记录框架不同):

  • 错误:任何严重或可能严重的错误/异常。我们的记录器会自动为我们服务器上的每封此类消息发送电子邮件(用法:logger.error("message"); )

  • 警告:任何可能警告我们潜在问题的消息,例如,当用户尝试使用错误的凭据登录时 - 如果经常或在短时间内发生,则可能表示攻击(用法:logger.warn("message"); )

  • INFO:查看日志文件时我们想知道的任何内容,例如,计划作业何时开始/结束(用法:logger.info("message"); )

  • DEBUG:顾名思义,调试我们很少打开的消息。(用法:logger.debug("message"); )

这样做的好处是,如果将日志级别设置为 WARN,则信息和调试消息几乎不会影响性能。如果您需要从生产系统获取其他信息,则可以在短时间内将级别降低到INFO或DEBUG(因为您将获得更多的日志条目,从而使您的日志文件更大,更难阅读)。调整日志级别等通常可以在运行时完成(我们的 JBoss 实例每分钟左右检查一次该配置中的更改)。


答案 2

这个摘录来自以下精彩的帖子

错误 - 发生了一些非常错误的事情,必须立即进行调查。任何系统都不能容忍在此级别上记录的项目。示例:NPE、数据库不可用、任务关键型用例无法继续。

WARN – 该过程可能会继续,但要格外小心。实际上,我一直希望在这里有两个级别:一个用于存在解决方法的明显问题(例如:“当前数据不可用,使用缓存值”),另一个级别(命名为:ATTENTION)用于潜在问题和建议。示例:“在开发模式下运行的应用程序”或“管理控制台未使用密码进行保护”。应用程序可以容忍警告消息,但应始终对其进行对齐和检查。

INFO – 重要的业务流程已完成。在理想情况下,管理员或高级用户应该能够理解INFO消息并快速找出应用程序正在执行的操作。例如,如果应用程序完全是关于预订机票的,则每张机票应该只有一个INFO语句,说明“[谁]从[哪里]到[哪里]预订了机票”。INFO消息的其他定义:显着改变应用程序状态的每个操作(数据库更新,外部系统请求)。

调试 – 开发人员的东西。我稍后将讨论什么样的信息值得记录。

TRACE – 非常详细的信息,仅用于开发。在生产环境中部署后,您可能会将跟踪消息保留一小段时间,但将这些日志语句视为临时的,最终应该或可能被关闭。DEBUG 和 TRACE 之间的区别是最困难的,但是如果在开发和测试功能后放置日志记录语句并将其删除,则它可能应该在 TRACE 级别。

PS:将跟踪读取为详细


推荐