- Log4j debug log api不够丰富
在进入,退出方法时针对方法的输入参数和返回值进行log,log中含有方法信息
logDebugOnMethodEntry, logDebugOnMethodExit
- log级别问题
如果log级别设置的是info,会把warning,error,fatal都打出来,各个级别不能单独控制。增加各级别分开控制开关。
- log格式的定制
可以定制log信息的pattern,这样会看起来很统一,log分析起来也容易logDebug(String pattern, Object... paramValues);
还有一个好处,不需要预先把相关String都append起来,提高performance
- log.isDebugEnabled();
参考第三点,这样就避免了Object的toString和String的concat操作。
- EmptyLogger
每次记log时,log4j都需要判断这个级别是否可以打log。如果logger的每个级别都有对应的logger实例,如果debug level被关了,debug级别对应的实例就是EmptyLogger,EmptyLogger里面所有方法的实现都是空的,就不需要这额外的判断了。