Okay. But I still believe we should have guard conditions especially for debug messages. It doesn't matter how the underlying implementation handles the log message. As a practice, we should use guard conditions. SLF4J API already provides a way to check the log level. So, we should use that. It also doesn't matter whether we use formatted messages or not.
On Fri, Jun 10, 2016 at 1:08 PM, Abimaran Kugathasan <abima...@wso2.com> wrote: > Hi Isuru, > > On Thu, Jun 9, 2016 at 4:54 PM, Isuru Perera <isu...@wso2.com> wrote: > >> >> >> On Thu, Jun 9, 2016 at 4:28 PM, Abimaran Kugathasan <abima...@wso2.com> >> wrote: >> >>> I think, it's depends on the framework and their versions. >>> >>> latest versions of slf4j or log4j 2 don't require guard statements. >>> >> Have they mentioned about this somewhere? >> > If you check slf4j Log4jLoggerAdapter class debug method [1], you can > see, the method itself check for whether logger is enabled for that level > > > public void debug(String format, Object arg1, Object arg2) { > if (logger.isDebugEnabled()) { > FormattingTuple ft = MessageFormatter.format(format, arg1, arg2); > logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable()); > } > } > > [1] : > http://www.slf4j.org/api/org/slf4j/impl/Log4jLoggerAdapter.html#debug(java.lang.String, > java.lang.Object...) > > > >> They use a parameterized log statement so that an event can be logged >>> unconditionally, but message formatting only occurs if the event is >>> enabled. Message construction is performed as needed by the logger, rather >>> than pre-emptively by the application. >>> >> That's right, but if we have a guard condition, there won't be a string >> object created in the runtime. This is what I said earlier and we need to >> avoid unnecessary strings. >> >>> >>> On Thu, Jun 9, 2016 at 3:13 PM, Isuru Perera <isu...@wso2.com> wrote: >>> >>>> I think it's better to use isDebugEnabled for any debug log, even if it >>>> is using parameters for a formatted string. If the debug is not enabled, we >>>> don't even want to create the String object. >>>> >>>> No need to assign to a final variable. Checking the condition just >>>> before logging should be enough. >>>> >>>> On Thu, Jun 9, 2016 at 3:06 PM, Afkham Azeez <az...@wso2.com> wrote: >>>> >>>>> No need to do isDebugEnabled ideally for formatted logs. >>>>> >>>>> On Thu, Jun 9, 2016 at 3:01 PM, Jayanga Kaushalya <jayan...@wso2.com> >>>>> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> Do we need to check whether the isDebugEnabled() for formatted debug >>>>>> logs without any string concatenations? For example below code: >>>>>> >>>>>> if (log.isDebugEnabled) { >>>>>> log.debug("Test log with var: {} and var: {}", var1, var2); >>>>>> } >>>>>> >>>>>> If we have to check it is, what is the best way to check it? Assign >>>>>> it to a final variable in the class header or check it every time where >>>>>> their is a debug log like above code? >>>>>> >>>>>> Thanks! >>>>>> >>>>>> *Jayanga Kaushalya* >>>>>> Software Engineer >>>>>> Mobile: +94777860160 >>>>>> WSO2 Inc. | http://wso2.com >>>>>> lean.enterprise.middleware >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> *Afkham Azeez* >>>>> Director of Architecture; WSO2, Inc.; http://wso2.com >>>>> Member; Apache Software Foundation; http://www.apache.org/ >>>>> * <http://www.apache.org/>* >>>>> *email: **az...@wso2.com* <az...@wso2.com> >>>>> * cell: +94 77 3320919 <%2B94%2077%203320919>blog: * >>>>> *http://blog.afkham.org* <http://blog.afkham.org> >>>>> *twitter: **http://twitter.com/afkham_azeez* >>>>> <http://twitter.com/afkham_azeez> >>>>> *linked-in: **http://lk.linkedin.com/in/afkhamazeez >>>>> <http://lk.linkedin.com/in/afkhamazeez>* >>>>> >>>>> *Lean . Enterprise . Middleware* >>>>> >>>>> _______________________________________________ >>>>> Dev mailing list >>>>> Dev@wso2.org >>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>> >>>>> >>>> >>>> >>>> -- >>>> Isuru Perera >>>> Associate Technical Lead | WSO2, Inc. | http://wso2.com/ >>>> Lean . Enterprise . Middleware >>>> >>>> about.me/chrishantha >>>> Contact: +IsuruPereraWSO2 >>>> <https://www.google.com/+IsuruPereraWSO2/about> >>>> >>>> _______________________________________________ >>>> Dev mailing list >>>> Dev@wso2.org >>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>> >>>> >>> >>> >>> -- >>> Thanks >>> Abimaran Kugathasan >>> Senior Software Engineer >>> >>> Email : abima...@wso2.com >>> Mobile : +94 773922820 >>> >>> <http://stackoverflow.com/users/515034> >>> <http://lk.linkedin.com/in/abimaran> >>> <http://www.lkabimaran.blogspot.com/> <https://github.com/abimarank> >>> <https://twitter.com/abimaran> >>> >>> >> >> >> -- >> Isuru Perera >> Associate Technical Lead | WSO2, Inc. | http://wso2.com/ >> Lean . Enterprise . Middleware >> >> about.me/chrishantha >> Contact: +IsuruPereraWSO2 <https://www.google.com/+IsuruPereraWSO2/about> >> > > > > -- > Thanks > Abimaran Kugathasan > Senior Software Engineer > > Email : abima...@wso2.com > Mobile : +94 773922820 > > <http://stackoverflow.com/users/515034> > <http://lk.linkedin.com/in/abimaran> > <http://www.lkabimaran.blogspot.com/> <https://github.com/abimarank> > <https://twitter.com/abimaran> > > -- Isuru Perera Associate Technical Lead | WSO2, Inc. | http://wso2.com/ Lean . Enterprise . Middleware about.me/chrishantha Contact: +IsuruPereraWSO2 <https://www.google.com/+IsuruPereraWSO2/about>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev