Pot*_*ipz 6 java error-handling logging exception
我是一个绿色开发人员,试图在大型多层java应用程序中处理错误处理(har-har).在很多情况下,我认为通过多个层次链接异常是一个好主意; 例如,当呼叫最低层的某些外部服务失败时,视图中会出现问题:
最重要的例外,我真正想要检查的栈跟踪,是链中的最后一个; 我提出了一个错误的请求,我需要修复foo的格式.但是当我让这个异常在层中冒泡时,很好地链接在对每个层都有意义的异常中...当我最终捕获并记录该事物时,默认的日志记录行为总是向我显示关于最外层异常的详细信息,以及可能是根本原因的5行堆栈跟踪.
这使得我希望在异常发生时记录它们,然后让它们冒泡,但最后你会记录大多数事情两次; 什么时候发生,什么时候最终被抓住
这里的最佳做法是什么?
很好的问题,我很好奇你会得到其他答案。
我倾向于采取“越多越好”的方法,并记录每一步。这会产生大原木吗?是的,但是当您在大型 Java 应用程序中调试问题时,您会感谢您拥有的每条日志行。还有一些工具(至少是grep
、awk
、sed
三重奏)可以帮助您过滤大文件。
另一种技术是编写此日志记录代码,但将其调低(如果您使用的是 log4j 之类的东西,请调至该TRACE
级别)。这样,如果您遇到问题,您可能没有可用的日志,但只需一行更改(以降低日志记录阈值),您就可以开始生成大量数据用于调试。
与之前的技术相结合,大多数日志库(在这里我再次依靠我对 log4j 的了解)允许您调整不同 java 包的日志级别。WARN
这意味着您可以将所有这些“捕获并重新抛出”日志行写入为跟踪,并在将较高级别包保持为DEBUG
或时将较低级别包上的日志记录调低TRACE
。
归档时间: |
|
查看次数: |
498 次 |
最近记录: |