一个(log.isDebugEnabled())条件每个调试语句出现

Oh *_*oon 1 java logging if-statement log4j

我想与社区核实,如果这是一种公认​​的做法,那么在一行中发生每个调试语句的多个if条件:

if (log.isDebugEnabled()) log.debug("rproductType = "+ producteType);
if (log.isDebugEnabled()) log.debug("rbundleFlag = " + bundleFrlag);
if (log.isDebugEnabled()) log.debug("rmrktSegment = " + mrktSeegment);
if (log.isDebugEnabled()) log.debug("rchannelTy = " + channelrTy);
if (log.isDebugEnabled()) log.debug("rcompanyPartner = " + coempanyPartner);
if (log.isDebugEnabled()) log.debug("rpreSaleDate = " + preSaleDaete);
if (log.isDebugEnabled()) log.debug("rportNC = " + portrNC);
if (log.isDebugEnabled()) log.debug("rLDC debug end");
Run Code Online (Sandbox Code Playgroud)

我个人支持有一个if条件来包装整个日志语句,因为它们出现在一行中.你对此有何看法?或者你看到为什么原作者想要为每个调试语句都有一个if条件?

谢谢!

Mer*_*ham 5

充其量,它是凌乱的.最糟糕的是,它执行绝对冗余的函数调用.

共享ifs 之间逻辑的唯一潜在差异是调试选项是否在调用期间以某种方式更改(可能是通过配置重新加载).但是捕获额外的半场电话确实不值得用粗糙的代码.

只需改变它. 不要重复自己

原因if在于,如果您不处于调试模式,则可以避免构建调试字符串的开销.您应该保留的部分(或者如果您发现这不是您的应用程序的性能关键部分,请不要保留).

编辑 FYI,通过"改变它",我的意思是这样做:

if (log.isDebugEnabled())
{
  log.debug("rproductType = "+ producteType);
  log.debug("rbundleFlag = " + bundleFrlag);
  // etc
}
Run Code Online (Sandbox Code Playgroud)