我的关注 |
¥0.1 java日志输出log.debug时,是否需要使用isDebugEnabled?
0

java中是使用log4j做日志输出的时候,是使用:

  1. log.debug("xxx");

还是

  1. if(log.isDebugEnabled()){
  2. log.debug("xxx");
  3. }

是否需要使用isDebugEnabled?

1个回答
1
采纳

其实log.debug内部已经调用了if(log.isDebugEnabled()){做判断了,所以某些情况并不需要使用,但是在有些情况还是需要使用if(log.isDebugEnabled()){

不需要使用的情况

log.debug("xxx") , logger.debug("xx: {}.", entry); 这样,即第一个参数和第二个参数并不需要额外计算量的时候,可以不必使用。

需要使用的情况

在debug参数需要先计算的时候,则可以加上if(log.isDebugEnabled()){以节约计算资源。
如:

  1. if (logger.isDebugEnabled()) {
  2. logger.debug("The entry is " + entry + ".");
  3. }

这里字符串拼接将耗费计算资源,虽然debug函数里面有使用if(log.isDebugEnabled()){,但是因为参数是先计算(字符拼接)后传入,还是会耗费性能。
其他情况如:

  1. if (logger.isDebugEnabled()) {
  2. logger.debug("SQL: {}", sqlBuilder.buildSQL());
  3. }

因为sqlBuilder.buildSQL()会先进行计算,会消耗计算性能,所以需要考虑使用if (logger.isDebugEnabled()) {

采纳答案
妩媚男神
修改
评论 (0)
撰写回答