log4j2异步Logger(详解)
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种方式任选其一即可,不要同时采用) 以上这篇log4j2异步Logger(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – 关于将R集成到Web应用程序中
- java – Camera.Parameters设备特定崩溃(三星S3 Mini)
- day56_9_20orm中的关键字段,orm查询13方法整合,查询优化和
- java – Generic constructor(Class clazz)不支持T,其中T是
- Java concurrency集合之ConcurrentSkipListSet_动力节点Jav
- java – char’0x8’这个字符是什么?
- java – 在数组中的参数时调用Method.invoke()
- java – 无法实例化TestExecutionListener
- Java Web 实现QQ登录功能一个帐号同一时间只能一个人登录
- Struts2 “.”和“[]”操作符:获取ActionContext中的所有内