欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

log4j2异步Logger(详解)

时间:2021-06-14 09:46:09|栏目:JAVA代码|点击:

1 异步Logger的意义

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

在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种方式任选其一即可,不要同时采用)

上一篇:基于StringBuilder类中的重要方法(介绍)

栏    目:JAVA代码

下一篇:Java 读取图片的mimeType的方法

本文标题:log4j2异步Logger(详解)

本文地址:http://www.codeinn.net/misctech/141730.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有