在 Logback 中,我们可以配置为: 1 当日志文件的大小达到 50MB 左右时,旋转文件并压缩它。所以我想知道它是否会在单独的线程中执行压缩操作,它会不会有任何性能问题?
最佳答案
我调查了 logback-1.0.3。 让我们考虑用例:
- 您调用 Logger#error(String)在你的代码中。
- 您的数据 filtered根据记录器配置。
- 将调用 Appenders在 buildLoggingEventAndAppend 之后和 callApenders
- 在你的例子中将调用 OutputStreamAppender 中的 append 方法.
- 基于触发器 RollingFileAppender将调用 rollover事件触发时。
- 翻转方法将调用appropriate compress method .
如您所见,所有内容都将在与记录数据相同的线程中进行记录和压缩。因此,您不应登录时间紧迫的线程。
就我个人而言,我认为在同一个线程中登录对于大多数应用程序来说并不重要,但这在很大程度上取决于您的环境、性能要求等。
如果你想异步记录数据,你可以使用AsyncAppender .在这种情况下,压缩也将在单独的线程中进行。
关于java - 用于在 Logback 中压缩日志文件的单独线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14930343/