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

Red*_*ket 16 java logging

我查看了关于记录器类的api(这里),我正在查看该Logger.info方法.当我看到它的边界显示为与字符串public void info(String msg)相同的消息时,我感到很困惑System.out.println().我想知道这两者之间有什么不同,为什么我们使用Logger而不是System.out.println打印出同样的东西.

在记录器中.

Logger.info("Hello")

输出:

[INFO ] 2015-08-07 11:18:46.140 [main] ClassName Hello
Run Code Online (Sandbox Code Playgroud)

System.out.println

`的System.out.println( "你好")

输出:你好

Ell*_*sch 16

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


Nat*_*hes 11

使用记录器可以抽象出很多细节,并且比写入stdout要多得多.

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

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

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

  • 您可以通过类别(通常是包和类名)和日志级别(跟踪,调试,信息,错误,致命)进行过滤,以便轻松配置要查看的日志消息以及要忽略的日志消息.通过日志记录,您可以更改记录器属性中的配置,或在应用程序中包含一个页面,以更改即时过滤的内容.

  • 您可以混合和匹配这些内容,例如,设置特定的smtp appender以通过电子邮件发送日志消息以记录错误级别或更高级别,此外还可以将消息写入滚动文件或其他任何内容.


pro*_*mer 5

Logger和System.out.println之间的主要区别是:
Logger:在文件(文本文件)中
System.out.println:打印文本

。在进行任何LIVE项目时,在控制台中记录Logger 的输出非常有用。
因为如果开发和部署了任何项目,那么您将无法检查控制台。那时,记录器将对跟踪项目的流程很有用,如果您在catch {...}块中添加了记录器,则可以找到错误或异常。

还请通过此Logger与System.out.println进行比较