【问题标题】:is java.util.logging.Logger class info() method a I/O operation?java.util.logging.Logger 类 info() 方法是 I/O 操作吗?
【发布时间】:2020-01-16 08:40:42
【问题描述】:

当涉及到服务器端工业级应用程序时,我在堆栈溢出中看到使用 System.out.println() 上的记录器框架是处理 Logging 的有效方法。而且我还把 System.out.println( ) 是 I/O 操作,因为它需要更多 CPU 使用率。所以我需要知道 logger.info() [这是 java 自带的内置类] 是否是 I/O 操作,并解释原因如果不是。

【问题讨论】:

  • 最终会有 IO,但与System.out.println 相比,日志框架中的 IO 通常针对吞吐量(以及更广泛的目标,例如登录到远程日志平台等)进行了更优化。

标签: java performance logging java.util.logging system.out


【解决方案1】:

这取决于注册的处理程序。

默认情况下,JUL 通过ConsoleHandler 输出到控制台,这是一个 IO 操作。如果使用将日志记录到文件 (FileHandler) 或通过网络 (SocketHandler) 的处理程序配置日志记录,那么这也是一个 IO 操作。

还有一个MemoryHandler,它不会使记录IO 操作。但它的用处非常非常有限。

使用像 SLF4J 这样的另一个日志框架并不会改变这一点。日志记录本质上是一种 IO 操作,因为您希望日志可以在应用程序之外访问,甚至在进程终止后也可以访问。不过,出于各种原因,使用像 SLF4J 这样的框架仍然是有利的(参见Why not use java.util.logging?)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 2017-05-19
    相关资源
    最近更新 更多