配置文件,配置日誌打印控制:
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包!!!