记录异常和exception.printstacktrace之间的区别

时间:2014-07-21 09:34:09

标签: java exception logging

当我使用带有

的记录器时,你能否澄清一下我的区别?
 LOGGER.error("Exception is -- " , exception);

 LOGGER.error("Exception is -- " , exception.printStackTrace());

哪一个更能获得有关异常的更多详细信息?

2 个答案:

答案 0 :(得分:3)

LOGGER.error("Exception is -- " , exception.printStackTrace());

其无效声明。 Throwable#printStackTrace方法的返回类型为 void ,它会将此throwable及其回溯打印到标准错误流。

您可能会发现LOGGER.error("Exception is -- " , exception);exception.printStackTrace()

之间存在差异

使用logger api(例如LOG4j,Logback等)记录异常是一种记录方式或更方便的方式,因为您可以预先定义所有与日志相关的设置。喜欢 -

  • 要定义的号码附加组件
  • 记录打印格式
  • 针对不同LOG.LEVEL的不同文件

等...

答案 1 :(得分:0)

主要区别在于第二个不编译。 printStackTrace()是一种void方法。

通常,当人们参与printStackTrace()时,他们会写

e.printStackTrace();

而不是

LOGGER.error(message, e);

但不要将这两者合并为一行。

无论如何,永远不要在已经有日志记录的应用程序中使用.printStackTrace(),因为您的堆栈跟踪甚至可能不会记录到日志中,它将出现在System.err流中,其中不应写入任何内容来自具有适当记录的应用程序。