log4j2異步Logger(詳解)
1 異步Logger的意義
之前的日志框架基本都實現了AsyncAppender,被證明對性能的提升作用非常明顯。
在log4j2日志框架中,增加了對Logger的異步實現。那么這一步的解耦,意義何在呢?
如圖,按我目前的理解:異步Logger是讓業(yè)務邏輯把日志信息放入Disruptor隊列后可以直接返回(無需等待“掛載的各個Appender”都取走數據)
優(yōu)點:更高吞吐、調用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中添加文件“l(fā)og4j2.component.properties”,文件增加以下內容:
“Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector”
3,手工指定部分Logger采用異步方式
log4j2.xml配置文件中使用AsyncRoot/AsyncLogger替代Root/Logger
(上述3種方式任選其一即可,不要同時采用)
以上這篇log4j2異步Logger(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java中@DateTimeFormat和@JsonFormat注解的使用
本文主要介紹了java中@DateTimeFormat和@JsonFormat注解的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08SpringBoot利用觀察者模式實現聯(lián)動更新機制
觀察者模式(Observer Pattern)是一種軟件設計模式,在許多應用系統(tǒng)中,我們經常需要處理多個表之間的關聯(lián)更新問題,本文將通過一個具體的案例,介紹如何在Spring Boot項目中利用觀察者模式來優(yōu)雅地解決這一需求,需要的朋友可以參考下2024-07-07Spring?Boot如何在加載bean時優(yōu)先選擇我
這篇文章主要介紹了Spring?Boot如何在加載bean時優(yōu)先選擇我,在?Spring?Boot?應用程序中,我們可以采取三種方式實現自己的?bean?優(yōu)先加載,本文通過實例代碼給大家詳細講解,需要的朋友可以參考下2023-03-03