用于在Logback中压缩日志文件的单独线程?

时间:2013-02-18 05:59:52

标签: java performance logging logback

在Logback中,我们可以配置为:1当日志文件的大小达到50MB时,旋转文件并压缩它。所以我想知道它会在一个单独的线程中进行压缩,它会有任何性能问题吗?

1 个答案:

答案 0 :(得分:6)

我调查了logback-1.0.3。 让我们考虑一下用例:

  1. 您在代码中调用Logger#error(String)
  2. 您的数据filtered根据Logger配置。
  3. 将在AppendersbuildLoggingEventAndAppend
  4. 之后调用callApenders
  5. 在您的情况下,将调用OutputStreamAppender中的追加方法。
  6. 基于触发器的RollingFileAppender会在事件触发时调用rollover
  7. 在翻转方法中,将调用appropriate compress method
  8. 正如您所看到的,所有内容都将记录并压缩在与记录的数据相同的线程中。因此,您不应该登录时间关键线程。

    就我个人而言,我认为登录同一个线程对大多数应用程序并不重要,但它很大程度上取决于您的环境,性能要求,e.t.c。

    如果要异步记录数据,可以使用AsyncAppender。在这种情况下,压缩也将在单独的线程中。