Remko Popma created LOG4J2-153:
----------------------------------

             Summary: Add a method to the Layout interface to allow Loggers to 
discover if any of their Appenders need the location StackTraceElement.
                 Key: LOG4J2-153
                 URL: https://issues.apache.org/jira/browse/LOG4J2-153
             Project: Log4j 2
          Issue Type: Improvement
            Reporter: Remko Popma


Use Case: any asynchronous Logger or Appender has this problem:
should it take a snapshot of the call stack (as implemented in 
Log4jLogEvent.getSource) or not?
This is an expensive method (1600+ nanoseconds on a machine with 2.9GHz cores) 
so you only want to call it if you need it. Currently there is no way to 
discover if the location information is used by any of the configured layouts.

If the Layout interface has a method that indicates whether the layout calls 
the LogEvent.getSource method, then the Logger can query its LoggerConfig if 
any of the configured Appenders has a Layout which needs location info. (Maybe 
boolean needsLocationInfo() would be a good name?)

With this information, a Logger can construct Log4jLogEvents with a non-null 
dummy StackTraceElement location if none of the layouts downstream need 
location info. The non-null dummy location would prevent LogEvent.getSource 
from taking a call stack snapshot.

The current AsynchAppender class would get an immediate performance boost from 
this, and custom asynchronous Loggers or Appenders would reap the same benefits.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to