LOGGER.error(exception.getMessage())和LOGGER.eerror(exception



如图

我知道他们两个都很好,但我只是想知道他们之间有什么不同?附言:我是个初学者。

LogEvent可以同时包含消息和异常。如果您使用第一种形式:

LOGGER.error(exception.getMessage());

只会记录错误消息,并且日志中会有类似的输出(取决于布局(:

[ERROR] - Exception message.

如果您使用第二种形式:

LOGGER.error(exception.getMessage(), exception);

您将同时拥有一条消息和一个异常。这通常会在日志中输出堆栈跟踪:

[ERROR] - Exception message.
java.lang.RuntimeException: Exception message.
at pl.copernik.log4j.Log4j2Test.run(Log4j2Test.java:19) [classes/:?]
at pl.copernik.log4j.Log4j2Test.main(Log4j2Test.java:15) [classes/:?]

由于您总是可以配置Log4j2.x来抑制输出中的堆栈跟踪(请参阅PatternLayout文档中的alwaysWriteExceptions(,因此第二种形式总是更好,因为它提供了更多信息。

备注:由于堆栈跟踪总是打印错误消息,我建议使用第三种形式:

LOGGER.error("An unexpected condition occurred while performing foo: {}",
exception.getMessage(), exception);

通过这种方式,您可以解释异常发生时的上下文:

[ERROR] - An unexpected condition occurred while performing foo: Exception message.
java.lang.RuntimeException: Exception message.
at pl.copernik.log4j.Log4j2Test.run(Log4j2Test.java:19) [classes/:?]
at pl.copernik.log4j.Log4j2Test.main(Log4j2Test.java:15) [classes/:?]

相关内容

  • 没有找到相关文章

最新更新