我正在捕获异常并尝试将堆栈跟踪写入日志,如下所示:
log.warn(e.getMessage());
Run Code Online (Sandbox Code Playgroud)
但它说的都是
null
Run Code Online (Sandbox Code Playgroud)
所以我改成了
log.warn(e.toString());
Run Code Online (Sandbox Code Playgroud)
现在只说了
java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)
如何将完整堆栈跟踪写入日志,以便我可以看到应用程序中生成此异常的位置?
您可以使用
logger.log(Level.WARN, "logged exception", ex);
Run Code Online (Sandbox Code Playgroud)
要么
logger.warn("logged exception", ex);
Run Code Online (Sandbox Code Playgroud)
资源:
如果您使用 Java 8,您可以执行以下操作:
LOGGER.error("Caught exception while methodX. Please investigate: "
+ exception
+ Arrays.asList(exception.getStackTrace())
.stream()
.map(Objects::toString)
.collect(Collectors.joining("\n"))
);
Run Code Online (Sandbox Code Playgroud)
使用 log4j,这是通过以下方式完成的:
logger.error("An error occurred", exception);
Run Code Online (Sandbox Code Playgroud)
第一个参数是要显示的消息,第二个参数是记录堆栈跟踪的异常(可抛出)。
另一种选择是 commons-logging,它是相同的:
log.error("Message", exception);
Run Code Online (Sandbox Code Playgroud)
使用 java.util.logging 这可以通过以下方式完成:
logger.log(Level.SEVERE, "Message", exception);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43216 次 |
| 最近记录: |