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 异步日志原理及配置的主要内容,如果未能解决你的问题,请参考以下文章