logback 异步日志配置

来源:互联网 发布:60魔兽数据库 编辑:程序博客网 时间:2024/06/05 10:16

目前所有的日志记录方式采用的都是同步的方式,即直接将日志写入文件。

在多应用的时候,这种效果会导致一定的线程运行延迟,所以可以采用异步的方式处理。

logback AsyncAppender    目前在logback 1.0.11及以上版本存在

 

集成到项目

异步日志记录是在原来logback上的扩展,并不是替代方式,所以只需要在原来的配置文件上添加一下配置

这样你的工程就会使用异步的方式记录日志

 

异步写日志原理:

 

ch.qos.logback.classic.AsyncAppender源码

可以配置的项为queueSize,discardingThreshold。


queueSize 默认值256,不过该值首次建议设置大一些,后续根据自己业务的特点去调优。 

 
discardingThreshold:默认情况下,当blockingQueue的容量高于阈值时(80%),会丢弃ERROR一下级别的日志,如果不希望丢弃日志(既每次都是全量保存),那可以设置为0。 如正常日志可以丢弃,那可以极大的提升性能,并保存关键的ERROR日志。


依赖

异步记录并不自己处理写日志,而只是提供了一种异步的方式,最后记录日志还需要到具体的appender上。

以上就是异步日志的工作方式,他内部需要一个具体的appender,所以在配置文件中,需要指出具体的依赖

这样,就能异步的记录到之前的appender上了。

 

性能

由于我本机配置有限,只能给出一个大概的值,供大家参考

由于需要模拟线上服务处理,因此需要每隔一段时间就暂停一次来模拟服务消耗

测试结果:

同步:6000

异步:5000

实际线上的服务处理时间导致的暂停时间会远远大于模拟时间,因此异步的优势应该更大。