Java Logger和System.out.println有什么区别

2022-09-01 22:35:24

我查找了有关记录器类(此处)的api,并且我正在查看该方法。当我看到它的周长显示为与.我想知道这两者之间有什么区别,以及为什么我们使用Logger而不是当他们可以打印出相同的东西时。Logger.infopublic void info(String msg)System.out.println()System.out.println

在记录器中。

Logger.info("Hello")

输出:

[INFO ] 2015-08-07 11:18:46.140 [main] ClassName Hello

System.out.println

'System.out.println(“Hello”)

输出:你好


答案 1

通常,因为可以配置 a 写入文件(和控制台)。它也可以配置为更高(或更低)的消息传递粒度。例如,您可以配置(在运行时)警告级别。在这种情况下,该记录器将不会显示调试信息消息。它可以包括诸如正在写入的类、行号以及(消息的)日期和时间等信息。Logger


答案 2

使用记录器可以让你抽象出很多细节,并做比写到stdout更多的事情。

  • 您可以指定要写入的不同目标。不同的追加器写入文件,在给定时间段内滚动文件,写入队列或数据库等。

  • 您可以为日志消息指定一致的格式,而不必将其添加到写入 stdout 的每一行。

  • 您可以选择缓冲输出的追加器,以便多个线程可以记录,而不会让线程争用控制台对象上的锁定。

  • 你可以通过按类别(通常是包和类名)和日志级别(跟踪、调试、信息、错误、致命)进行筛选来执行很多操作,以便轻松配置要查看的日志消息和要忽略的日志消息。通过日志记录,您可以更改记录器属性中的配置,或在应用程序中包含页面以更改动态筛选的内容。

  • 您可以混合和匹配这些东西,例如,除了将消息写入滚动文件或其他任何内容之外,还可以将特定smtp追加器设置为电子邮件日志消息以记录错误级别或更高。


推荐