log4j2採用AsyncLogger的錯誤解決方案

配置文件,配置日誌打印控制:

Appender採用默認同的(不額外加異步控制的Async)

Logger採用異步的AsyncLogger(root無所謂)

如果此時是這樣配置的,也就是想要使用AsyncLogger + (sync)Appender的方式,但是卻出錯了:

Unable to invoke factory method in class class org.apache.logging.log4j.core.async.AsyncLoggerConfig for element AsyncLogger. java.lang.reflect.InvocationTargetException

解決方法:

pom文件中,或者說項目的依賴jar包中,只引入了log4j2的相關api包和core包。

補充一個 額外的log4j2本身代碼邏輯所依賴的 disruptor包。

問題解決!!!

問題來源:log4j2的AsyncLogger本身的邏輯採用了緩衝區思想,使用的是disruptor框架來實現一個環形無鎖隊列。

讓人想不到的是,這個東西竟然需要自己引入依賴jar包!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章