本文介绍 Logback 异步日志配置的原理及方法。
Logback 默认日志记录使用同步方式,一定程度上会造成性能延迟,尤其在写入文件、集中式日志处理系统(ELK)等场景中。
Logback 提供 ch.qos.logback.classic.AsyncAppender
异步日志记录类,AsyncAppender
的工作原理是将日志任务写入 BlockingQueue
中,委托其它 Appender
依次处理 BlockingQueue
中的日志任务。所以 AsyncAppender
自己并不负责写入日志,只是提供一种异步方式,写入日志还需其它具体的 Appender
执行,如 FileAppender
、RollingFileAppender
等。
Logback 异步日志记录参考配置如下:
<!-- 异步日志记录 -->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>1024</queueSize>
<appender-ref ref="OTHER_APPENDER"/>
</appender>
说明:
-
discardingThreshold
:丢弃阈值,默认情况下日志任务队列容量高于80%
时会丢弃ERROR
以下级别日志,如果希望全部保存而不丢弃任何日志则需要设置为0
。 -
queueSize
:日志任务队列长度,默认256
,需要根据具体业务场景进行设置。 -
appender-ref
:具体执行记录日志任务的Appender
,如FileAppender
、RollingFileAppender
、LogstashTcpSocketAppender
等。