java - java.util.logging.Logger类的info()方法是I/O操作吗?

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

我在堆栈溢出中看到,当涉及到服务器端工业级应用程序时,使用 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/

相关文章:

java - 在调用 getSingleResult() 方法时出现 java.lang.ClassCastException?

java - 我不明白这个Java代码(位图字体)

java - flash() OutputStreamWriter 对网络的副作用

c++ - 将 float 转换为字符串时如何加速此代码?

mysql - 在 MySQL 性能中通过硬编码列表过滤掉行

python - 找不到记录器的处理程序

symfony - 在 symfony 中记录 fatal error

java - 如何摆脱这个泛型警告?

delphi - 您通过哪些登录桌面应用程序来提高稳定性?

java - 通过更改 URL 在 .Net Webservice 和 Java Webservice 之间切换