多语言展示
当前在线:1863今日阅读:103今日分享:49

Log学习--Logback异步日志的使用和原理分析

Logback日志模块是log4j模块的升级,相比log4j,其有很多改进和升级,其中异步日志输出就是一个亮点,本篇经验就分享一下这块内容。
工具/原料

Java, Eclipse

方法/步骤
1

Logback 在配置文件中通过 进行日志输出的相关配置(相关内容可以参考如下经验),与异步日志相关的是 AsyncAppender , 其配置如下:0512 这里重点解释一下配置中 的作用,我们的业务线程调用异步日志输出机制输出日志时,其只是将日志事件添加到日志队列中(不进行IO操作),会有另一个后台日志处理线程作为消费者从该队列中读取日志事件,并调用 指定的日志输出类进行具体地日志输出。

2

日志的异步输出类配置完毕后,我们还需配置一个日志记录类来使用这个日志输出类:                                     

3

测试使用,注意: 对于异步日志输出,在配置日志输出样式的时候,部分 logback 内置输出样式参数无法使用,比如代表日志输出方法的 M% 代表日志输出类的 C% 代表日志输出行的 L% ,强行配置使用这些样式,会导致日志输出异常!注意:在普通的日志输出配置上,同样不赞成上述这些日志输出参数的使用,因为这些参数会导致对方法调用栈的访问,高并发下会严重影响系统性能!

4

异步日志的使用总结,在特定业务场景下,如果因为日志记录的IO操作影响到了系统性能,可以考虑使用异步日志机制,但需要对相关参数比如日志事件队列的长度 queueSize 以及日志丢弃阈值 discardingThreshold 进行各种测试已找到最优值。不合理的队列长度或者丢弃策略会导致业务线程阻塞在日志队列上,从而让异步日志成为系统性能瓶颈!

推荐信息