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