java - Java 中的异常堆栈跟踪日志记录应使用什么级别?

标签 java exception error-handling stack-trace

我正在寻找有关如何有效记录异常及其堆栈跟踪的最佳实践文档(或您的意见)。当然,假设使用一种流行的日志框架,例如 Log4J、SLF4J、java.util.logging 等。

我对您关于应记录哪个级别的堆栈跟踪的意见特别感兴趣。

我听到了一些相互矛盾的观点,例如:

  • 堆栈跟踪应仅在 DEBUG 级别记录,而 ERROR 级别应仅包含“人类可读”错误消息
  • 堆栈跟踪应记录在错误级别,以便为运算符(operator)提供查找异常根本原因所需的最大信息量

我发现了几篇有趣的文章,但没有一篇涉及这个特定主题:

这可能意味着这些文章的作者和我有同样的担忧:-)

我对您对此主题的看法非常感兴趣。

最佳答案

堆栈跟踪是故障排除时获得的最有值(value)的信息。我永远不会冒险将其记录在调试级别,因为它可能会被禁用。而且我几乎从不想抑制堆栈跟踪。

另请注意:

log.error("Houston, we have a problem", ex);

将在标记为 ERROR 的行中打印人类可读的消息,而堆栈跟踪位于该行之后。如果您希望错误仅供人类可读,只需执行 grep ERROR 即可。

关于java - Java 中的异常堆栈跟踪日志记录应使用什么级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7691064/

相关文章:

java - 发送带附件的后台电子邮件

java - 为什么没有窗口关闭就会出现问题

java - 链接异常,捕获异常并抛出新异常

javascript - 使用JavaScript跟踪Flash错误

PHP - 错误处理

java - 设置 Google AppEngine Jetty 版本

java - JVM 调试连接器内部结构和安全性

c# - 处理来自 .NET 的访问冲突

java.lang.Thread 无法转换为 java.util.concurrent.ForkJoinWorkerThread

VBA 错误退出调用函数