多个appender log4j性能

时间:2013-07-09 10:07:43

标签: java log4j slf4j

我正在使用slf4j,实现log4j来登录我的java项目。目前我有两个appender,FILE和CONSOLE。

我想知道以下两件事:

  • 使用多个appender(在本例中为CONSOLE和FILE)会导致日志记录中的性能问题吗?

  • 当有人想要使用CONSOLE和FILE appender时?

2 个答案:

答案 0 :(得分:1)

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

来自log4J manual

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

这包括构建语句并编写语句,但如果您正在大量记录,写入时间仍然很明显。

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

  1. 跟踪发生的事情
  2. 找出错误
  3. CONSOLE对第一部分没用,因为日志不会保存在任何地方。如果日志记录很重,并且所有日志都发送到CONSOLE,则日志量将使控制台上的输出不可读,因此目标2也会失败。

    IMO使用 less 之类的东西从文件中读取日志更有意义。作为一般做法,你登录到文件,如果必须,只记录ERROR消息到控制台,因为一些ERROR消息将指示出错的地方,而控制台上的数百条日志行只是垃圾,因为你不能当控制台如此迅速地刷新时,对它有任何意义。

    <强> TL-DR

    成本可能不会太高,但是为什么在没有额外优势的情况下会产生额外的成本呢?

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

答案 1 :(得分:0)

  1. 我向你发出挑战,要求注意任何性能变化。
  2. 例如,您可能希望守护程序应用程序在控制台和文件中记录。它似乎并不是一种不常见的行为。
相关问题