log4j2采用AsyncLogger出現(xiàn)的錯(cuò)誤及解決方案
log4j2采用AsyncLogger的錯(cuò)誤
配置文件,配置日志打印控制
Appender采用默認(rèn)同的(不額外加異步控制的Async)
Logger采用異步的AsyncLogger(root無(wú)所謂)
如果此時(shí)是這樣配置的,也就是想要使用AsyncLogger + (sync)Appender的方式,但是卻出錯(cuò)了:
Unable to invoke factory method in class class org.apache.logging.log4j.core.async.AsyncLoggerConfig for element AsyncLogger. java.lang.reflect.InvocationTargetException
解決方法
pom文件中,或者說(shuō)項(xiàng)目的依賴jar包中,只引入了log4j2的相關(guān)api包和core包。
補(bǔ)充一個(gè) 額外的log4j2本身代碼邏輯所依賴的 disruptor包。
問(wèn)題解決?。?!
問(wèn)題來(lái)源:log4j2的AsyncLogger本身的邏輯采用了緩沖區(qū)思想,使用的是disruptor框架來(lái)實(shí)現(xiàn)一個(gè)環(huán)形無(wú)鎖隊(duì)列。
讓人想不到的是,這個(gè)東西竟然需要自己引入依賴jar包?。?!
log4j的AsyncLogger的name屬性
可以是包路徑比如:org.apache
使用方式:
Logger logger=LoggerFactory.getLogger(getClass());
那么所有org.apache包下的日志都寫在這個(gè)asynclogger
也可以是自定義名字比如:myLogger
使用方式:
Logger logger=LoggerFactory.getLogger("myLogger");
那么該日志寫在這個(gè)asynclogger
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java項(xiàng)目打包發(fā)布到maven私倉(cāng)常見的幾種方式
這篇文章主要介紹了項(xiàng)目打包發(fā)布到maven私倉(cāng)常見的幾種方式,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03java list,set,map,數(shù)組間的相互轉(zhuǎn)換詳解
這篇文章主要介紹了java list,set,map,數(shù)組間的相互轉(zhuǎn)換詳解的相關(guān)資料,這里附有實(shí)例代碼,具有參考價(jià)值,需要的朋友可以參考下2017-01-01淺談MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的
本文主要介紹了MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02利用線程實(shí)現(xiàn)動(dòng)態(tài)顯示系統(tǒng)時(shí)間
編寫Applet小程序,通過(guò)在HTML文檔中接收參數(shù),顯示當(dāng)前的系統(tǒng)時(shí)間,需要的朋友可以參考下2015-10-10java 學(xué)習(xí)筆記(入門篇)_java的基礎(chǔ)語(yǔ)法
從基礎(chǔ)語(yǔ)法開始,這個(gè)語(yǔ)法你也可以理解為英語(yǔ)或是漢語(yǔ)里面的語(yǔ)法,只不過(guò)大家各有各的特點(diǎn)和區(qū)別;那么在學(xué)習(xí)的過(guò)程中我們就要不斷的積累重要的類和方法,這樣寫程序就會(huì)方便快捷了,下面就開始學(xué)習(xí)java的基礎(chǔ)語(yǔ)法2013-01-01SpringMVC實(shí)現(xiàn)簡(jiǎn)單跳轉(zhuǎn)方法(專題)
這篇文章主要介紹了SpringMVC實(shí)現(xiàn)簡(jiǎn)單跳轉(zhuǎn)方法(專題),詳細(xì)的介紹了SpringMVC跳轉(zhuǎn)的幾種方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-03-03