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

Mik*_*ike 4 java performance logging logback

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

Tak*_*aky 6

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

  1. 您在代码中调用Logger#error(String).
  2. 您的数据根据Logger配置进行过滤.
  3. 将在buildLoggingEventAndAppendcallApenders之后调用Appender
  4. 在您的情况下,将调用OutputStreamAppender中的 append方法.
  5. 基于触发器的RollingFileAppender将在事件触发时调用翻转.
  6. 在rollover方法中将调用适当的compress方法.

正如您所看到的,所有内容都将记录并在与记录的数据相同的线程中进行压缩.因此,您不应该登录时间关键线程.

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

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