Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅当级别为调试时打印stacktrace_Java_Logging_Log4j_Slf4j - Fatal编程技术网

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错误记录器仅用于系统管理员,而调试实际上用于支持工程师。你的建议很有道理,我要么接受它,要么定义自己的日志