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

标签 java if-statement log4j logging

我想与社区核实一下,如果这是一种公认​​的做法,是否为连续出现的每个调试语句设置多个 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");

我个人支持使用一个 if 条件来包装整个日志语句,因为它们是连续出现的。您对此有何意见?或者你明白为什么原作者想要为每个调试语句都有一个 if 条件吗?

谢谢!

最佳答案

充其量,它是凌乱的。在最坏的情况下,它会执行绝对冗余的函数调用。

共享 if 之间的唯一潜在逻辑差异是调试选项是否在调用中以某种方式更改(可能通过重新加载配置)。但是捕获额外的半个调用确实不值得编写大量代码。

只是改变它。 Don't Repeat Yourself

if 存在的原因是为了避免在不处于 Debug模式时构建调试字符串的开销;那部分你应该保留(或者不保留,如果你发现这不是你应用程序的性能关键部分)。

编辑 仅供引用,通过“改变它”,我的意思是改为这样做:

if (log.isDebugEnabled())
{
  log.debug("rproductType = "+ producteType);
  log.debug("rbundleFlag = " + bundleFrlag);
  // etc
}

关于java - 一个 (log.isDebugEnabled()) 条件每个调试语句出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500575/

相关文章:

java - 有些参数可以在方法中更改,但有些参数不能在 java 中更改

r - R 中嵌套 For/If 循环的算法效率

Python:类 "init"中的 If-else;这有用吗?

java - 如果 TRY 错误

java - Intellij 无法初始化插件

java - ReSTLet:GET 请求使用访问多个资源的查询

java - 列中显示的文本未显示在单元格的正确位置

Java:ArrayList 对象的归并排序

java - AppEngine - Log4j 和日志级别

java - 如何配置 log4j 以启用/禁用日志记录到文件?