如何在log4j中包含异常和错误

时间:2017-05-31 12:05:56

标签: java exception testing logging log4j

我已经制作了log4j appender,它将所有日志存储到一个文件中:

log.info("Hello world");

会将Hello World存储到文件中。我如何能够将例外作为日志存储到该文件中。例如声明:

log.info(5 / 0);

应该将整个堆栈从DivisionByZero Exception存储到log4j appender中声明的文件中。

P.S。我知道我可以将log.info(e.printStackTrace())放入catch子句中,但我希望记录每个catched和non-catched异常。我正在测试,因此有很多例外情况不应该被捕获,只是抛出。我需要配置,属性或与log4j相关的任何其他语句,它们会将所有异常流式传输到其appender中。

P.S.S。我知道我可以将stderr输出重定向到文件,但我不想触摸控制台。

1 个答案:

答案 0 :(得分:2)

如果您想要记录异常,则必须确保catch块执行日志记录,如:

catch (WhateverException e) {
  log(e); // just a place holder ...
}

如果要记录未捕获的异常,则需要未捕获的异常处理程序。有关示例,请参阅here

如果您希望能够记录每个异常,确保每个异常都被捕获,这一点非常重要。

并且要明确一点:应该可以使用未被捕获的处理程序,只需记录并重新抛出(最坏的情况是你必须将传入的throwable包装成一个RuntimeException的)。