我在堆栈溢出中看到,当涉及到服务器端工业级应用程序时,使用 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? )。
关于java - java.util.logging.Logger类的info()方法是I/O操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59765744/