应使用哪个日志级别来记录特定于开发人员的日志

时间:2012-04-12 08:39:04

标签: java slf4j

应该使用哪个日志级别,是org.slf4j.logger.Logger.trace or debug用于记录低级开发人员日志吗?

5 个答案:

答案 0 :(得分:2)

这是一个描述日志级别的好列表:

  • <强>调试 这是最详细的日志记录级别(最大卷设置)。我通常认为Debug是生产系统的超出范围,并且仅用于开发和测试。我更倾向于让我的日志记录水平恰到好处,所以我有足够的信息并努力在信息级别或更高级别记录。

  • <强>信息 信息级别通常用于输出对系统的运行和管理有用的信息。信息也可以是用于记录应用程序关键区域中的入口和出口点的级别。但是,您可以选择在调试级别添加更多入口和出口点,以便在开发和测试期间获得更多粒度。

  • 警告 警告通常用于处理的“例外”或其他重要的日志事件。例如,如果您的应用程序需要配置设置但在缺少设置的情况下具有默认值,则应使用警告级别来记录缺少的配置设置。

  • 错误 错误用于记录所有未处理的异常。这通常记录在应用程序边界的catch块内。

  • <强>致命 Fatal保留用于特殊例外/条件,您必须快速选择这些事件。我通常不希望在应用程序开发的早期使用Fatal。通常只有经验我才能确定值得注意的致命绰号经历,特定事件值得推广给致命。毕竟,错误是一个错误。

来自http://thejoyofcode.com/Logging_Levels_and_how_to_use_them.aspx

答案 1 :(得分:1)

取决于开发者日志的含义。如果您的意思是调试信息,显然应该使用DEBUG

人们倾向于使用TRACE来获取非常细粒度的日志,例如方法输入,方法退出等,如果启用它们会丢失日志文件。

这个方法可能会给你一个例子。

public String fetchMessage(long id) {
    logger.entry(id);

    logger.debug("Retrieving message from database");

    String message = this.messageService.fetchMessageById(id);

    logger.exit(message);
}

答案 2 :(得分:1)

日志对于调试非常重要,有时甚至是故障排除。记录所有必需的信息很好。但是,过多的日志记录也可能妨碍性能,例如编写长XML消息或类似的东西。

这就是为什么有不同的级别可用于记录。需要为信息类型选择适当的级别。

例如,catch块中的日志错误级别。

catch (Exception e) {
   log.error("Exception... information.");
}

一直需要一些明显的信息     log.info(“log info”); //基本信息 - 始终打开

调试级别信息
    log.debug(“debug values ...”); //可以在需要时打开此级别。

它可以避免过度记录。

Thumb规则: - 永远不要在日志中记录敏感信息。

答案 3 :(得分:0)

这取决于您当地的工作流程以及您的工作方式。

我们的经验法则是INFO始终打开,DEBUG在需要进行取证分析时会记录在生产中,但TRACE不会记录在开发人员计算机之外。

这意味着如果您需要有可供调查的信息,请在调试时记录。如果没有,请将其记录在trace。

答案 4 :(得分:0)

实际上没有“开发者日志”和“用户日志”。 每个包都应包含一个独立的API,其中自己的概念和图层

您所谓的“开发人员日志”可能是您应用程序“内核”的子部分,您称之为“用户日志”的部分将是“命令行”或“UI”部分。

应该使用自己的对象模型和业务规则独立考虑每个包。在此Universe中,顶层通常有一个“公共”部分,用于处理用例的基本步骤。您还有一个“受保护的”部分用于扩展功能和“私有”部分以满足您的内部需求。 这个图层可以以分层方式存储在不同的* java包 *中。 您的日志记录练习应该基于此图层方案。

好的做法是使用API​​,例如 java.logging log4j ......这样可以让您以包名为基础登录。

INFO 应该是基本的高级步骤,这意味着您的包的顶层公开方法会发生什么。

DEBUG 应该是一个更精细的粒子,仍然不会影响表现。

TRACE 应该用于可能导致性能问题的非常详细的日志。记得始终在if(level == TRACE)中包含对trace()的调用,这样你就不会执行构建消息等无用的任务......等等。

WARN ,可以处理异常。

ERR 当未处理异常但未导致关闭主线程时。

当我不得不终止整个过程时,

致命

祝你好运!

雷诺