Java 仅当级别为调试时打印stacktrace
我们维护两个不同的日志文件,一个只记录错误消息,另一个用于调试信息。我不想用异常堆栈跟踪将错误文件弄得杂乱无章,所以每次捕获任何异常时,我都必须添加以下两行Java 仅当级别为调试时打印stacktrace,java,logging,log4j,slf4j,Java,Logging,Log4j,Slf4j,我们维护两个不同的日志文件,一个只记录错误消息,另一个用于调试信息。我不想用异常堆栈跟踪将错误文件弄得杂乱无章,所以每次捕获任何异常时,我都必须添加以下两行 try{ ... } catch(Exception e){ log.error("Error during SOME_SERVICE {}" , e.getMessage()); log.debug("Exception ", e); } 有没有更简单的方法可以在一行代码中实现这一点 正如评论中所建议的,我有两个选择,要
try{
...
}
catch(Exception e){
log.error("Error during SOME_SERVICE {}" , e.getMessage());
log.debug("Exception ", e);
}
有没有更简单的方法可以在一行代码中实现这一点 正如评论中所建议的,我有两个选择,要么接受它,要么编写自己的自定义日志程序来完成预期的行为。现在,我还是保持原样 对于自定义日志记录,有大量资源,因此不会在此处发布解决方案
正如评论中所建议的,我有两个选择,要么与它一起生活,要么编写自己的自定义记录器来完成预期的行为。现在,我还是保持原样 对于自定义日志记录,有大量资源,因此不会在此处发布解决方案
您可以尝试此日志。错误(“某些服务{}期间出错”,e);。如果记录器级别为info,则它将打印错误消息;否则,如果记录器级别为debug,则它将打印整个跟踪。严格来说,使用一行而不是两行将节省50%的空间,这几乎不是问题。一个更大的问题是,当遇到错误时,为什么不记录完整的堆栈跟踪?这并不完全是“杂乱”,而是日志文件的用途。至于您最初的问题,我怀疑您可能会对日志框架进行一些欺骗,以便仅在调试级别启用时打印堆栈跟踪,但为此,您需要与记录器交互(并编写许多行代码)。@Kayaman错误记录器仅用于系统管理员,而调试实际上用于支持工程师。你的建议很有道理,我要么接受它,要么定义我自己的日志。你可以试试这个日志;。如果记录器级别为info,则它将打印错误消息;否则,如果记录器级别为debug,则它将打印整个跟踪。严格来说,使用一行而不是两行将节省50%的空间,这几乎不是问题。一个更大的问题是,当遇到错误时,为什么不记录完整的堆栈跟踪?这并不完全是“杂乱”,而是日志文件的用途。至于您最初的问题,我怀疑您可能会对日志框架进行一些欺骗,以便仅在调试级别启用时打印堆栈跟踪,但为此,您需要与记录器交互(并编写许多行代码)。@Kayaman错误记录器仅用于系统管理员,而调试实际上用于支持工程师。你的建议很有道理,我要么接受它,要么定义自己的日志