日誌系列之Log4j2非同步Loggers

2021-08-13 14:04:57 字數 1149 閱讀 3274

log4j2引入非同步loggers,顯著提公升了日誌吞吐量和降低了延時,如下圖所示:

基於disruptor,實現了執行緒間通訊的無鎖化;

無gc模式:通過物件復用,避免頻繁建立物件,減少gc次數;

新增disruptor包;

log4j-2.9 and higher require disruptor-3.3.4.jar or higher on the classpath. prior to log4j-2.9, disruptor-3.0.0.jar or higher was required.

設定log4j2.contextselector系統引數;

-dlog4j2.contextselector=org.apache

.logging

.log4j.core

.async

.asyncloggercontextselector

配置檔案如下圖所示:

?xml version="1.0" encoding="utf-8"?>

status="warn">

name="randomaccessfile"

filename="async.log"

immediateflush="false"

%d %p %c [%t] %m %ex%npattern>

patternlayout>

randomaccessfile>

level="info"

includelocation="false">

ref="randomaccessfile"/>

root>

loggers>

configuration>

注意:此時使用正常的 和標籤,否則會增加不必要的消耗;

新增disruptor包;

詳情參考:

log4j2非同步Logger 詳解

1 非同步logger的意義 之前的日誌框架基本都實現qriio了asyncappender,被證明對效能的提公升作用非常明顯。在log4j2日誌框架中,增加了對logger的非同步實現。那麼程式設計客棧這一步的解耦,意義何在呢?如圖,按我目前的理解 非同步logger是讓業務邏輯把日誌資訊放入di...

log4j2配置mybatis日誌

前天我上傳了我的mybatis系列課程 的第六講,主要內容是如何使用log4j2 具體版本為v2.0 rc1 為mybatis 3.2.7配置日誌。實際上目前最新的版本是剛剛發布的v2.0 rc2,我也嘗試過在mybatis 3.2.7中使用它,但卻報出以下錯誤 接著,在他的提示下,通過查閱myba...

springboot日誌體系 log4j2

最近除錯 和執行 的時候,一些日誌列印的亂七八槽,根據日誌很難快速定位到問題,感覺自己是為了列印日誌而列印日誌,花了點時間把日誌的相關整理了一下,意在讓日誌發揮最大的作用。本文解決以下問題 為何使用log4j2 springboot下log4j2日誌的使用 控制台日誌顯示的級別和檔案儲存的日誌不同 ...