4

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

4

1 回答 1

6

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

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

如您所见,所有内容都将被记录并压缩在与记录数据相同的线程中。因此,您不应该登录时间关键线程。

就个人而言,我认为登录同一个线程对于大多数应用程序来说并不重要,但这很大程度上取决于您的环境、性能要求等

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

于 2013-02-18T07:38:29.733 回答