log4j2 异步日志原理及配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4j2 异步日志原理及配置相关的知识,希望对你有一定的参考价值。

参考技术A log4j2通过讲打日志流程中的部分阶段进行异步化,使得日志打印性能得到了很大的提升。
要想了解log4j如果实现异步日志,进而提升性能,就需要先了解日志打印的基本过程。

在log4j中,有两个重要的概念,分别是 Logger 、 Appender 。Logger是负责具体的生产日志数据,我们平时的Logger.info(...)就是生产日志数据的过程。Appender则是负责讲数据搬运到目的地,如console、文件、hive、网络设备等等。

而log42实现异步日志,主要包括以下两种方式:

异步Logger通过使用LMAX Disruptor环形队列和单独的处理线程,避免了锁的竞争,从而实现更高的吞吐量。队列大小默认4096,通过以下参数,可以开启异步日志。

异步Appender则是使用了java中的ArrayBlockingQueue,默认队列大小1024。log4j2官方测试,asyncLogger相比asyncAppender有更好的表现。

是否可以同时使用AsyncLogger + AsyncAppender?同时使用是否有更好表现?
据stackoverflow上回答,AsyncLogger是更新的异步机制,有更好的表现。AsyncAppender是之前的异步机制。同时使用也不会增加性能表现。见
https://stackoverflow.com/questions/24177601/difference-between-asynclogger-and-asyncappender-in-log4j2

https://logging.apache.org/log4j/2.x/manual/async.html
https://www.cnblogs.com/yeyang/p/7944906.html
https://bryantchang.github.io/2019/01/15/log4j2-asyncLogger/

以上是关于log4j2 异步日志原理及配置的主要内容,如果未能解决你的问题,请参考以下文章

如何监控 Log4j2 异步日志遇到写入瓶颈

SpringCloud升级之路2020.0.x版-10.使用Log4j2以及一些核心配置

Log4j2异步日志同步日志和混合日志的配置详解

利用 Log4j2 异步保存日志到 MongoDB 中

Log4j2简介和异步日志梳理

Log4j2中的同步日志与异步日志