1

我正在使用 slf4j,实现 log4j 来登录我的 java 项目。目前我有 2 个附加程序,文件和控制台。

我想知道以下两件事:

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

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

4

2 回答 2

1

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

来自log4J 手册

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

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

但是你需要问一个更基本的问题——你为什么要记录?

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

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

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

TL-DR

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

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

于 2013-08-05T11:25:14.573 回答
-1
  1. 我挑战你注意任何性能变化。
  2. 例如,您可能希望守护程序应用程序同时登录控制台和文件。这种行为似乎并不少见。
于 2013-07-09T10:13:09.640 回答