应该使用哪个日志级别,是org.slf4j.logger.Logger.trace or debug
用于记录低级开发人员日志吗?
答案 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 当未处理异常但未导致关闭主线程时。
当我不得不终止整个过程时,致命。
祝你好运!雷诺