printStackTrace vs Java中的Logger框架

时间:2016-11-23 15:29:33

标签: java exception log4j stack-trace printstream

在Java中,异常处理可以通过多种方式完成。让我们使用Logging框架将异常处理区分为log4jsl4j,其中除了处理异常之外,还可以将日志重定向到文件。

如果我们使用异常类方法printStackTrace()代替Logger框架来处理异常并通过将其重定向到文件而不是标准错误输出/控制台来获取异常调用堆栈,那么现在,以下是问题:

  1. 后面的实现是否会处理异常,或者只是将异常打印到文件?
  2. 在生产环境中,实施Logger框架优先于printStacktrace()的理由是什么?
  3. 提前致谢!

2 个答案:

答案 0 :(得分:0)

到2) 日志记录框架不是更好的文件处理程序,但是,例如,从代码中提取日志记录的配置。因此,当您更改配置(例如,开发和生产的其他详细日志级别)时,您不必更改代码 - 您只需为每个测试阶段使用其他日志框架配置。 如果要更改日志文件名,日志文件大小(轮换)或不同包或类的特定日志详细信息,可以通过修改配置轻松完成。

答案 1 :(得分:0)

有很多理由说明为什么你不应该使用printStackTrace()once it's not a recent thing here,让我们不要使用God's Perfect Exception link,特别注意Splunk,确实非常好。)

记录框架允许我们使用很多东西(很多):

  • 同时将我们的日志发送到不同的地方。他们中的大多数都带有几个appender,它们执行控制台和文件输出等操作,并使用电子邮件或JMS发送日志消息,例如;
  • 使用严重性级别,来源,过滤密钥环等自定义消息;
  • 基于xml / properties文件的简单自定义配置,无需更改Java代码;
  • 良好的异步处理,主要用于分布式系统;
  • 详细程度配置,设置记录例外的方式;

自定义appender功能非常棒,因为我们可以将日志发送到非文件目的地,例如Sumo LogicLogglylogstashanalysing the right logging framework等。就像现在许多公司已经分析和监控他们的生产系统一样。

另外,请考虑{{3}}以满足您的需求。