Thanks a lot! So:
- for class name better to use %c with the LogManager.getLogger(this.class) instead of the calculation i do ? - for method name avoid %M and use new Throwable().getStackTrace instead Thread.currentThread().getStackTrace() to get better performance ? Regards On Thu, Mar 30, 2017 at 1:49 PM, Remko Popma <remko.po...@gmail.com> wrote: > > > Sent from my iPhone > > > On Mar 30, 2017, at 16:24, Pietro Galassi <pietro.gala...@gmail.com> > wrote: > > > > So, > > > > using such code like this: > > > > LogManager.getLogger(this.class); will let the code be fast ? > Yes. > > > > > > and it's faster than the code i published ? > Yes. The point of my answer was that you want to *avoid calculating > location*. Just have log messages that clearly say "the result of step X in > calculation Y is Z" and you don't need class name, method name or line > number in your log. > > > > > > Also why new Throwable().getStackTrace is faster than > > Thread.currentThread().getStackTrace(). ? > I think we concluded that from benchmarks results. We don't know why they > are different. But anyway, the key to performance is avoiding all attempts > to calculate location. > > > Does the new in Throwable can give performance issue ? > Yes. Avoid if you want good performance. > > > > > > Regards. > > > > > >> On Wed, Mar 29, 2017 at 5:49 PM, Remko Popma <remko.po...@gmail.com> > wrote: > >> > >> Pietro, > >> > >> The performance impact of logging location information is massive. > >> See > >> https://logging.apache.org/log4j/2.x/performance.html# > >> asyncLoggingWithLocation > >> > >> You can increase logging speed by ~80x by not logging location > information. > >> > >> If you follow the conventions that each class has its own logger (and > the > >> logger name is the class that it is for), then %c or %logger in the > pattern > >> layout will tell you the name of the class. Then all that remains is > make > >> your log messages informative enough that you don't need line numbers to > >> disambiguate them. > >> > >> Remko > >> > >> > >> On Thu, Mar 30, 2017 at 12:42 AM, Ralph Goers < > ralph.go...@dslextreme.com> > >> wrote: > >> > >>> What Java version are you using? Why do you think your code is going > to > >>> perform better than what Log4j is doing? > >>> > >>> The fastest way to get the caller information is to use Java 9’s > >>> StackWalker.getCallerClass() method which only takes a couple of > >>> milliseconds. But doing that might actually make the application > perform > >>> worse as you would potentially be capturing that information even for > >>> events that are not going to be logged. > >>> > >>> Ralph > >>> > >>>> On Mar 29, 2017, at 3:42 AM, Pietro Galassi <pietro.gala...@gmail.com > > > >>> wrote: > >>>> > >>>> Hi, > >>>> > >>>> sorry for boothering you all. I'm in the need to have a logging > >>>> optimization and i whould like to ask you all about the use of %m%n. > >>>> > >>>> Due to the fact i need optimization should i use : > >>>> > >>>> %m%n > >>>> > >>>> or should implement my own Class/Method name finder with: > >>>> > >>>> > >>>> private static String getLoggingMethod() { > >>>> StackTraceElement stackTraceElements[] = Thread.currentThread(). > >>>> getStackTrace(); > >>>> StackTraceElement caller = stackTraceElements[3]; > >>>> return caller.getMethodName(); > >>>> } > >>>> > >>>> and > >>>> > >>>> > >>>> private String getLoggingMethodClassNameIfDebug(int deep) { > >>>> if (logger.isDebugEnabled()) { > >>>> StackTraceElement stackTraceElements[] = Thread.currentThread(). > >>>> getStackTrace(); > >>>> StackTraceElement caller = stackTraceElements[deep]; > >>>> return buildMehodNameClassNameByStackTrace(caller); > >>>> } else { > >>>> return EMPTY; > >>>> } > >>>> } > >>>> > >>>> > >>>> ? > >>>> > >>>> Thanks a lot in advice. > >>>> > >>>> Best regards, > >>>> Pietro > >>> > >>> > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > >>> For additional commands, e-mail: log4j-user-h...@logging.apache.org > >>> > >>> > >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > For additional commands, e-mail: log4j-user-h...@logging.apache.org > >