- Log4j debug log api不夠豐富
在進(jìn)入,退出方法時(shí)針對(duì)方法的輸入?yún)?shù)和返回值進(jìn)行l(wèi)og,log中含有方法信息
logDebugOnMethodEntry, logDebugOnMethodExit
- log級(jí)別問(wèn)題
如果log級(jí)別設(shè)置的是info,會(huì)把warning,error,fatal都打出來(lái),各個(gè)級(jí)別不能單獨(dú)控制。增加各級(jí)別分開(kāi)控制開(kāi)關(guān)。
- log格式的定制
可以定制log信息的pattern,這樣會(huì)看起來(lái)很統(tǒng)一,log分析起來(lái)也容易logDebug(String pattern, Object... paramValues);
還有一個(gè)好處,不需要預(yù)先把相關(guān)String都append起來(lái),提高performance
- log.isDebugEnabled();
參考第三點(diǎn),這樣就避免了Object的toString和String的concat操作。
- EmptyLogger
每次記log時(shí),log4j都需要判斷這個(gè)級(jí)別是否可以打log。如果logger的每個(gè)級(jí)別都有對(duì)應(yīng)的logger實(shí)例,如果debug level被關(guān)了,debug級(jí)別對(duì)應(yīng)的實(shí)例就是EmptyLogger,EmptyLogger里面所有方法的實(shí)現(xiàn)都是空的,就不需要這額外的判斷了。