Check the recommended patterns for java8 [1], I think the lambda syntax makes 
the conditional less needed.

Anthony

[1] https://logging.apache.org/log4j/2.0/manual/api.html 
<https://logging.apache.org/log4j/2.0/manual/api.html>


> On Sep 7, 2018, at 11:38 AM, John Blum <jb...@pivotal.io> wrote:
> 
> Grrr, meant...
> 
> logger.debug("Logging in user {}", user);
> 
> 
> 
> On Fri, Sep 7, 2018 at 11:37 AM, John Blum <jb...@pivotal.io> wrote:
> 
>> Technically, I think that is SLF4J syntax (but maybe Log4J2 supports this
>> format now as well; anyway).
>> 
>> Still, you should be careful with log statements like...
>> 
>> logger.debug("Logging in user {}" + user);
>> 
>> Assuming the User class itself and an "informative" and properly
>> constructed toString() method.  So use it judiciously and wisely.
>> 
>> 
>> On Fri, Sep 7, 2018 at 11:18 AM, Dan Smith <dsm...@pivotal.io> wrote:
>> 
>>> I think this pattern is a holdover from using log4j 1. In that version,
>>> you
>>> added an if check to avoid unnecessary string concatenation if debug was
>>> enabled.
>>> 
>>> 
>>>   1. if (logger.isDebugEnabled()) {
>>>   2.     logger.debug("Logging in user " + user.getName() + " with
>>> birthday " + user.getBirthdayCalendar());
>>>   3. }
>>> 
>>> 
>>> Log4j2 lets you pass a format string, so you can just do this:
>>> 
>>> logger.debug("Logging in user {} with birthday {}", user.getName(),
>>> user.getBirthdayCalendar());
>>> 
>>> 
>>> These examples come from the log4j2 docs:
>>> 
>>> https://logging.apache.org/log4j/2.0/manual/api.html
>>> 
>>> -Dan
>>> 
>>> On Fri, Sep 7, 2018 at 10:50 AM, Galen O'Sullivan <gosulli...@apache.org>
>>> wrote:
>>> 
>>>> Hi all,
>>>> 
>>>> I've noticed a pattern in Geode where we wrap a log call in a check at
>>> the
>>>> same level, such as:
>>>> 
>>>>    if (logger.isDebugEnabled()) {
>>>>          logger.debug("cleaning up incompletely started
>>>> DistributionManager due to exception", r);
>>>>        }
>>>> 
>>>> Is there any reason to do this? To my mind, it's an extra conditional
>>> that
>>>> should essentially be the first check inside `logger.debug(...)`
>>> anyways,
>>>> and it complicates the code and makes it less readable. I've even seen
>>>> places in the code which have `if (logger.isDebugEnabled())
>>>> logger.trace(...))` and such.
>>>> 
>>>> I would like to propose that unless there is a compelling reason to use
>>>> this pattern, we remove all extra checks entirely.
>>>> 
>>>> Galen
>>>> 
>>> 
>> 
>> 
>> 
>> --
>> -John
>> john.blum10101 (skype)
>> 
> 
> 
> 
> -- 
> -John
> john.blum10101 (skype)

Reply via email to