Stefan Wehner created LOG4J2-643:
------------------------------------

             Summary: LogEventFactory not called when using AsyncContextSelector
                 Key: LOG4J2-643
                 URL: https://issues.apache.org/jira/browse/LOG4J2-643
             Project: Log4j 2
          Issue Type: Improvement
          Components: Core
    Affects Versions: 2.0-rc2
            Reporter: Stefan Wehner
            Priority: Minor


We're using the JDBCAppender to write log messages to a MySQL database - 
including some data provided by the ThreadContext.
We wanted to make sure that at least some default values are available in the 
Event's MDC in case the values are not provided in the ThreadContext We also 
calculate some extra data (delta of the log event's time from the request start 
time - stored in the ThreadContext).

We thought a good idea would be to do this in a custom LogEventFactory, that 
makes sure that values are set, provides defaults, and calculates the offset.

When switching to using the AsyncLoggerContext this doesn't work anymore, 
because the LogEventFactory is not used (unless the RingBuffer is full - see 
AsyncLogger:248).

I'm not sure if we're abusing the LogEventFactory here for something that it 
wasn't meant to do...
If you think this is a legit use case: shouldn't the async logging also use 
this factory somehow? I understand the biggest problem of using the 
LogEventFactory to create an event, and then pass the values to the translator 
would be the context stack, which is handled differently in the AsyncLogger and 
the Log4jLogEvent constructor.




--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to