欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

log4j2异步Logger(详解)

程序员文章站 2024-02-22 10:34:28
1 异步logger的意义 之前的日志框架基本都实现了asyncappender,被证明对性能的提升作用非常明显。 在log4j2日志框架中,增加了对logger的异步...

1 异步logger的意义

之前的日志框架基本都实现了asyncappender,被证明对性能的提升作用非常明显。

在log4j2日志框架中,增加了对logger的异步实现。那么这一步的解耦,意义何在呢?

log4j2异步Logger(详解)

如图,按我目前的理解:异步logger是让业务逻辑把日志信息放入disruptor队列后可以直接返回(无需等待“挂载的各个appender”都取走数据)

优点:更高吞吐、调用log方法更低的延迟。

缺点:异常处理麻烦、 可变日志消息问题、更大的cpu开销、需要等待“最慢的appender”消费完成。

异步logger会使用disruptor做高吞吐队列,异步appender会使用arrayblockingqueue做队列。

异步logger与异步appender都可以设置“队列满了之后的策略”,我个人建议都设置为“按日志级别部分丢弃”。

2 启用

1,全局启用异步logger方案一

jvm启动参数(boot.ini)加上“-dlog4jcontextselector=org.apache.logging.log4j.core.async.asyncloggercontextselector”

2,全局启用异步logger方案二

classpath中添加文件“log4j2.component.properties”,文件增加以下内容:

“log4jcontextselector=org.apache.logging.log4j.core.async.asyncloggercontextselector”

3,手工指定部分logger采用异步方式

log4j2.xml配置文件中使用asyncroot/asynclogger替代root/logger

(上述3种方式任选其一即可,不要同时采用)

以上这篇log4j2异步logger(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。