logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Remko Popma <remko.po...@gmail.com>
Subject Re: About performance
Date Wed, 29 Mar 2017 15:49:32 GMT
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.goers@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.galassi@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-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-user-help@logging.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message