在System.out.println()是使用记录器框架的服务器端工业级应用程序的服务器端工业级应用程序时,我在堆栈溢出中看到了这一点,并且我还认为System.out.println()是一个I / O操作,因为它需要更多的CPU使用率。所以我需要知道logger.info()[这是Java附带的内置类]是否为I / O操作,并解释为什么不。
最佳答案
这取决于注册的处理程序。
默认情况下,JUL通过ConsoleHandler
输出到控制台,这是IO操作。如果使用配置为记录到文件(FileHandler
)或通过网络(SocketHandler
)的处理程序配置日志记录,则这也将是IO操作。
还有一个MemoryHandler
,它不会记录IO操作。但是它的用途非常非常有限。
使用其他日志框架(如SLF4J)不会改变这一点。日志记录本质上是IO操作,因为您希望日志可以在应用程序外部甚至在进程终止后也可以访问。但是,由于各种原因,使用像SLF4J这样的框架仍然是有利的(参见Why not use java.util.logging?)。