我正在寻找有关如何有效记录异常及其堆栈跟踪的最佳实践文档(或您的意见)。当然,假设使用一种流行的日志框架,例如 Log4J、SLF4J、java.util.logging 等。
我对您关于应记录哪个级别的堆栈跟踪的意见特别感兴趣。
我听到了一些相互矛盾的观点,例如:
- 堆栈跟踪应仅在 DEBUG 级别记录,而 ERROR 级别应仅包含“人类可读”错误消息
- 堆栈跟踪应记录在错误级别,以便为运算符(operator)提供查找异常根本原因所需的最大信息量
我发现了几篇有趣的文章,但没有一篇涉及这个特定主题:
- http://today.java.net/pub/a/today/2006/04/06/exception-handling-antipatterns.html
- http://today.java.net/pub/a/today/2003/12/04/exceptions.html
这可能意味着这些文章的作者和我有同样的担忧:-)
我对您对此主题的看法非常感兴趣。
最佳答案
堆栈跟踪是故障排除时获得的最有值(value)的信息。我永远不会冒险将其记录在调试级别,因为它可能会被禁用。而且我几乎从不想抑制堆栈跟踪。
另请注意:
log.error("Houston, we have a problem", ex);
将在标记为 ERROR 的行中打印人类可读的消息,而堆栈跟踪位于该行之后。如果您希望错误仅供人类可读,只需执行 grep ERROR
即可。
关于java - Java 中的异常堆栈跟踪日志记录应使用什么级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7691064/