java - 多个appender log4j 性能

标签 java log4j slf4j

我正在使用 slf4j,log4j 的实现来记录我的 java 项目。目前我有 2 个附加程序,FILE 和 CONSOLE。

我想知道以下两件事:

  • 使用多个附加程序(在本例中为 CONSOLE 和 FILE)是否会导致日志记录出现性能问题?

  • 当有人想要同时使用 CONSOLE 和 FILE 附加程序时?

最佳答案

写入 CONSOLE 和 FILE 时,您正在写入 2 个不同的流。在多线程系统中,性能影响不会太大,但对于大容量,它仍然很明显。

来自log4J manual

The typical cost of actually logging is about 100 to 300 microseconds.

这包括构建语句并编写它,但如果您大量记录日志,则编写所花费的时间仍然很明显。

但是您需要问一个更基本的问题 - 您为什么要登录?

  1. 跟踪正在发生的事情
  2. 找出错误

控制台对于第一部分没有用,因为日志没有保存在任何地方。如果日志记录很重,并且所有日志都发送到CONSOLE,那么日志量会让控制台上的输出不可读,所以目的2也失败了。

在我看来,使用less之类的东西从文件中读取日志更有意义。作为一般做法,您记录到文件,如果必须,只将错误消息记录到控制台,因为一些错误消息将表明出现问题,而控制台上的数百条日志行只是垃圾,因为当控制台刷新如此之快时,您无法理解它。

TL-DR

成本可能不多,但是当您没有获得额外优势时为什么要承担额外成本呢?

阅读这些有关 log 4j 性能的链接。 log4j-performance log4j-decreased application performance log4j appenders

关于java - 多个appender log4j 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17545519/

相关文章:

Java 在不使用 rgb 的情况下对 Color.color 设置透明度

java - common.apex.runtime.impl.ExecutionException : Unexpected end of file from server apex

java - 从科学记数法转换 double

根据文件的 grails log4j 不同的附加程序

java - log4j 或 Logback 是否支持内存映射文件?

hibernate - 如何将 SLF4J 用于部署在带有 Hibernate JPA 的 GlassFish 3 上的 Java EE Web 应用程序?

用于登录文件的 Android 最佳记录器

java - 哪种类型的网络应用程序实际上会受到 float 错误的影响?

java - 在java中,如何将日志写入log4j的特定文件附加程序?

Java + Maven + 制作可执行 jar + 线程 "main"java.lang.NoClassDefFoundError : org/slf4j/LoggerFactory 中的异常