在 Logback 中,我们可以配置为: 1 当日志文件的大小达到 50MB 左右时,旋转文件并压缩它。所以我想知道它会在一个单独的线程中进行压缩,它会有任何性能问题吗?
问问题
816 次
1 回答
6
我调查了 logback-1.0.3。让我们考虑用例:
- 您在代码中调用Logger#error(String)。
- 您的数据根据 Logger 配置过滤。
- 将在buildLoggingEventAndAppend和callApenders之后调用Appenders
- 在您的情况下,将在OutputStreamAppender中调用 append 方法。
- 基于触发器的RollingFileAppender将在事件触发时 调用翻转。
- 在翻转方法中将调用适当的压缩方法。
如您所见,所有内容都将被记录并压缩在与记录数据相同的线程中。因此,您不应该登录时间关键线程。
就个人而言,我认为登录同一个线程对于大多数应用程序来说并不重要,但这很大程度上取决于您的环境、性能要求等
如果要异步记录数据,可以使用AsyncAppender。在这种情况下,压缩也将在单独的线程中。
于 2013-02-18T07:38:29.733 回答