Java - 需要一个记录堆栈跟踪的日志包

Yat*_*oel 13 java logging

是否有一个Logger可以轻松记录我的堆栈跟踪(我得到了什么 ex.printStackTrace())?我搜索了log4j文档,发现没有关于记录堆栈跟踪的信息.

我可以自己做

StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
String stacktrace = sw.toString();
logger.error(stacktrace);
Run Code Online (Sandbox Code Playgroud)

但我不想在整个地方复制这些代码.

如果log4j不会为我执行此操作,是否有另一个日志包将为我记录堆栈跟踪?

谢谢.

Boz*_*zho 32

使用log4j,这可以通过以下方式完成:

logger.error("An error occurred", exception);
Run Code Online (Sandbox Code Playgroud)

第一个参数是要显示的消息,第二个参数是异常(throwable),其堆栈跟踪被记录.

另一个选项是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)