【发布时间】:2015-09-29 05:53:14
【问题描述】:
我们维护两个不同的日志文件,一个只记录错误消息,另一个用于调试信息。我不想用异常堆栈跟踪使错误文件混乱,所以每次捕获任何异常时我都必须添加以下两行
try{
...
}
catch(Exception e){
log.error("Error during SOME_SERVICE {}" , e.getMessage());
log.debug("Exception ", e);
}
有没有更简单的方法可以做到这一点,可能是在一行代码中?
【问题讨论】:
-
你可以试试这个 log.error("Error during SOME_SERVICE {}" , e);.如果记录器级别是信息,那么它将打印错误消息,否则如果记录器级别是调试,那么它将打印整个跟踪
-
虽然使用一行而不是两行严格来说可以节省 50% 的空间,但这几乎不是问题。更大的问题是为什么在遇到错误时不记录完整的堆栈跟踪?这并不完全是“混乱”,而是日志文件的用途。至于你原来的问题,我怀疑你可以对日志框架做一些诡计,仅在调试级别打开时打印堆栈跟踪,但为此你需要与记录器交互(并编写多行代码)。
-
@Kayaman 错误记录器仅适用于系统管理员,而调试实际上是为了支持工程师。你的建议很有道理,我要么接受它,要么定义我自己的 Logger