Hi,

After OFBIZ-10052, OFBIZ-10448, and OFBIZ-10697 I think it's time to have another discussion following https://markmail.org/message/mplvusuqn7oshl4v which was one year ago.

In OFBIZ-10697 I wrote:

   <<OK let me explain my point.

   By default OOTB debug.properties sets all debug levels to be used but 
verbose. So there is no point checking other levels than verbose to see if
   they are used, they are anyway. So OOTB only checking verbose is needed. 
That's what developers need.

   Now you invoked production where a different debug.properties setting would 
be used. Sincerely I'd never, never, remove the other levels than
   verbose from a production setting (as it's OOTB). I'd even be quite 
reluctant to remove any of those levels from a production site running for
   years! *You never know what can happen*, and those debug levels are your 
only lifebelt in case of issues, small and big ones.

   That's my point, and that's why I see checking if a level is used as 
premature optimisation but for verbose. We need them anyway and IMO setting
   false for any but verbose in debug.properties in production would be conceited if not 
"suicidal" . But maybe you have use cases I ignore?

   Anway, I'll start a discussion in dev ML about this point. Like I said above and 
in OFBIZ-10448 <https://issues.apache.org/jira/browse/OFBIZ-10448>:

       I'd be all for removing the 312 useless cases but not the "if 
(Debug.verboseOn())">>

To what Michael answered

   <<We have several projects with huge traffic and you certainly won't run 
them on debug level info, verbose or debug.
   In my view, at least these 3 debug levels should be checked. At least, existing 
checks should not be removed.>>

I think Michael's point is perfectly valid. So I answered:

   <<I had not the same experience, you are lucky to not cross any issue in 
production needing an info or debug level.
   OK then we need to see things otherwise and rather enforce the checks to 
these 2 levels at least in all the source (Java and Groovy). That's what
   I'll ask in the convo to come in dev ML.>>

So what are your opinion about that? Should we enforce as suggest Michael or 
should we remove for the reasons I wrote.

I'd prefer to be consistent. So either we enforce the checks to the info, 
verbose and debug levels. Either we only keep the verbose checks.

Finally Mathieu has added a grain of salt:

   <<Hello Michael Brohl 
<https://issues.apache.org/jira/secure/ViewProfile.jspa?name=mbrohl>,

   If you care about the impact of loggers on performance you should take a look at 
the Beautiful Logger <https://github.com/forax/beautiful_logger>
   library by Remi Forax which implements a truly transparent logger. In a recent 
Devoxx talk <https://www.youtube.com/watch?v=z5UkoLaW6ME> (in
   french) he showed that even doing if (Debug.logXXX()) has a 3x slowdown compared 
to a no-op.>>

So maybe we should have a closer look at  Beautiful Logger before taking any decision? 
Note that it uses JitPack, hence seems to need "Java 11 to build".

Thanks

Jacques

Reply via email to