spring this.logger.isDebugEnabled()

这种写法在网银的时候也见到过,不过那个时候没有太深入去想,回想起来为什么会在代码里边这么写,确实是一个需要了解的问题
首先这个问题涉及到了 log 日志的级别,
  • Logger共有6个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 那么就跳过这个条件下的代码,进而提高效率(打印少量日志,运行小量代码)