什么时候使用log4j超过系统

时间:2013-09-05 14:29:20

标签: java logging log4j

为什么使用logger.debug()代替System.out.println()是一种好习惯?

我了解log4j允许您控制您要打印的内容(DEBUGFATALINFO等),但除此之外,还有其他好处吗?

3 个答案:

答案 0 :(得分:5)

Logger为您的日志记录增加了更多价值。

  • 日志级别:在生产环境中,您不关心某些级别(例如:调试信息),只有严重错误和系统崩溃。
  • 日志过滤:过滤允许记录的组件。
  • 日志格式:控制日志中包含的信息及其格式。您可以设置默认值(如时间和线程ID)或为每个语句添加更具体的默认值。
  • 日志目标:您可以设置记录器以写入文件,电子邮件,数据库等。
  • 保存和存档日志的策略:让记录器管理日志,保留一些历史记录,删除旧日志

此外,记录器通常是同步的,因此您的打印语句不会相互重写。 You cannot guarantee that with System.out

您可以使用System.out实现所有这些功能,但这将是如此复杂和繁琐。

答案 1 :(得分:0)

如果您的代码曾在Web服务或系统服务中使用过,则使用debug语句将确保它们出现在服务日志中。如果不是,则冒着将它们打印到隐藏的控制台窗口并丢失的风险。

答案 2 :(得分:0)

与普通标准输出相比,专业记录仪具有许多优点:

  • 记录的逻辑分离,至少在两个正交区域:子系统和重要性
  • 灵活性 - 有许多预定义的输出和存储日志数据的方法,如果你真的想要,你可以自己滚动
  • 可配置性 - 您可以精确控制 哪里进行记录,所有这些都是实际使用日志记录的代码的外部,使其简单且不引人注目
  • 格式化 - 您无需手动附加所有簿记信息,例如类名,时间等。记录器以完全可配置的方式为您执行此操作,允许您编写简单,清晰的日志记录代码并保留所有的好处,如过滤和精确的信息。
  • 速度 - 记录器经过优化,不会引入太多开销