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

Java 如何在log4j中包含异常和错误,java,exception,testing,logging,log4j,Java,Exception,Testing,Logging,Log4j,我制作了log4j appender,将所有日志存储到一个文件中: log.info("Hello world"); 将Hello World存储到文件中。如何使异常作为日志存储到该文件中。例如,声明: log.info(5 / 0); 应该将DivisionByZero异常的整个堆栈存储到log4j appender中指定的文件中 p.S.我知道我可以将log.info(例如printStackTrace())放入catch子句中,但我希望记录每个捕获的和未捕获的异常。我正在测试,所以有很

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

log.info("Hello world");
Hello World
存储到文件中。如何使异常作为日志存储到该文件中。例如,声明:

log.info(5 / 0);
应该将
DivisionByZero异常的整个堆栈存储到log4j appender中指定的文件中


p.S.我知道我可以将
log.info(例如printStackTrace())
放入catch子句中,但我希望记录每个捕获的和未捕获的异常。我正在测试,所以有很多异常不应该被捕获,而只是抛出。我需要配置、属性或任何其他与log4j相关的语句,这些语句将所有异常流式传输到其appender中


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

如果您希望记录已捕获的异常,必须确保catch块执行日志记录,如:

catch (WhateverException e) {
  log(e); // just a place holder ...
}
如果要记录未捕获的异常,则需要一个未捕获的异常处理程序。有关示例,请参见

如果您希望能够记录每个异常,那么确保在某个时刻捕获每个异常是很重要的


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

我正在测试,所以有很多异常不应该被捕获,只是被抛出,这就是为什么我要把p.s.我需要配置,属性,任何与log4j相关的语句,这些语句将所有异常流到它的appender中。正如所解释的:日志记录只能发生在catch块中。如果希望记录所有异常,则必须以某种方式捕获它们。这就是这个未捕获处理程序存在的原因!编程中99%的问题都有解决方案,所以如果你认为某个问题没有解决方案,最好保持安静,等待其他人回答。我已经说过,无论您以何种方式谈论,我都无法捕捉异常,因此这不是解决方案。顺便说一句,我已经使用了我想在某个框架中实现的功能,但它并不是以您的方式实现的,@milosdju我只是简单地向您解释Java语言中可能实现的功能。如果你觉得这些限制很烦人,那真的不是我的问题。不是我编的。如果你还能听到其他消息,我会非常惊讶。我对java略知一二。然后:你的最后一句话毫无意义。当你的代码不符合你的要求时,编辑你的问题并添加一个新的选项。声称您的代码不起作用并不是我们可以帮助您解决的问题。请参阅此示例,了解@GhostCat如何了解您的特定问题领域: