当我捕获异常并记录它时,日志只显示异常名称,而不是异常堆栈

时间:2017-07-10 03:44:07

标签: java exception exception-handling log4j error-logging

虽然登录服务器,但日志显示异常名称:NullPointerException,但不显示异常堆栈,因此我找不到错误的来源。

请告诉我为什么日志没有显示异常堆栈,我怎么能正确呢?而日志系统是log4j系统

try {
   // ... function called
} catch (Throwable t) {
   log.error("the Exception is : ", t);
}

错误日志只显示:异常为:java.lang.NullPointerException

2 个答案:

答案 0 :(得分:1)

使用StandardScaler()或添加logger.catching(t)作为参数。

如果你使用t.getStackTrace() log4j,只需使用对象的logger.error(<A String>, <A Object>)方法。

答案 1 :(得分:0)

您使用的是Log4j吗?如果是,则实际使用正确的两参数方法。它也应该打印堆栈跟踪。请参阅文档以了解错误 - http://logging.apache.org/log4j/1.2/index.html

如果您仍然想要堆栈跟踪,请尝试此操作。

StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
String stacktrace = sw.toString();
log.error(stacktrace);

但我会建议你坚持你的实施。