这种写法在网银的时候也见到过,不过那个时候没有太深刻去想,回想起来为何会在代码里边这么写,确实是一个须要了解的问题
首先这个问题涉及到了 log 日志的级别,
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
他们分别对应Logger的trace, debug, info, warn, error和fatal方法进行输出,可是咱们一般只使用debug、info和error这三个最经常使用的级别。运行时的log输出级别能够经过更改log4j配置文件来进行配置,就免去了注释掉debug代码的尴尬。
好比在这里定义了INFO级别,则应用程序中全部DEBUG级别的日志信息将不被打印出来。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。若是设置级别为INFO,则优先级高于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将能够被输出,小于该级别的如DEBUG将不会被输出。
判断 logger.isDebugEnabled() 这个,若是日志级别不是debug 那么就跳过这个条件下的代码,进而提升效率(打印少许日志,运行小量代码)