当我使用带有
的记录器时,你能否澄清一下我的区别? LOGGER.error("Exception is -- " , exception);
和
LOGGER.error("Exception is -- " , exception.printStackTrace());
哪一个更能获得有关异常的更多详细信息?
答案 0 :(得分:3)
LOGGER.error("Exception is -- " , exception.printStackTrace());
其无效声明。 Throwable#printStackTrace
方法的返回类型为 void ,它会将此throwable及其回溯打印到标准错误流。
您可能会发现LOGGER.error("Exception is -- " , exception);
和exception.printStackTrace()
使用logger api(例如LOG4j,Logback等)记录异常是一种记录方式或更方便的方式,因为您可以预先定义所有与日志相关的设置。喜欢 -
等...
答案 1 :(得分:0)
主要区别在于第二个不编译。 printStackTrace()
是一种void
方法。
通常,当人们参与printStackTrace()
时,他们会写
e.printStackTrace();
而不是
LOGGER.error(message, e);
但不要将这两者合并为一行。
无论如何,永远不要在已经有日志记录的应用程序中使用.printStackTrace()
,因为您的堆栈跟踪甚至可能不会记录到日志中,它将出现在System.err
流中,其中不应写入任何内容来自具有适当记录的应用程序。