hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Doug Cutting (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-6884) Add LOG.isDebugEnabled() guard for each LOG.debug("...")
Date Mon, 16 Aug 2010 22:35:21 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-6884?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12899145#action_12899145
] 

Doug Cutting commented on HADOOP-6884:
--------------------------------------

> 1. Code must remain as readable/simple as possible and maintainable (no wrapping isDebugEnabled()
in all of source code).

Does anyone believe that?  I think the guards should ideally be limited to performance sensitive
parts of the code.  But if folks don't trust that can be maintained, then a warning when non-constant
strings are logged might be acceptable.  Constant strings should be as fast as the guard.

> 2. Code must perform best (no varargs, autoboxing, string concatenation, etc for unused
debug lines)

We could easily implement a guard that both performs well and does not bloat code, e.g.:
{code}
public static void debugLog(String message) { LOG.debug(message); }
public static void debugLog(String message, Object o1) {
  if (LOG.isDebugEnabled())
    LOG.debug(MessageFormat.format(message, new Object[] {o1}));
}
public static void debugLog(String message, Object o1, Object o2) {
  if (LOG.isDebugEnabled())
    LOG.debug(MessageFormat.format(message, new Object[] {o1, o2}));
}
public static void debugLog(String message, Object o1, Object o2, Object o3) {
  if (LOG.isDebugEnabled())
    LOG.debug(MessageFormat.format(message, new Object[] {o1, o2, o3}));
}
...
{code}

> Add LOG.isDebugEnabled() guard for each LOG.debug("...")
> --------------------------------------------------------
>
>                 Key: HADOOP-6884
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6884
>             Project: Hadoop Common
>          Issue Type: Improvement
>    Affects Versions: 0.22.0
>            Reporter: Erik Steffl
>            Assignee: Erik Steffl
>             Fix For: 0.22.0
>
>         Attachments: HADOOP-6884-0.22-1.patch, HADOOP-6884-0.22.patch
>
>
> Each LOG.debug("...") should be executed only if LOG.isDebugEnabled() is true, in some
cases it's expensive to construct the string that is being printed to log. It's much easier
to always use LOG.isDebugEnabled() because it's easier to check (rather than in each case
reason whether it's necessary or not).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message