Das Archive created LOG4J2-100:
----------------------------------

             Summary: Allow Log4jLogEvent serialization with subclasses
                 Key: LOG4J2-100
                 URL: https://issues.apache.org/jira/browse/LOG4J2-100
             Project: Log4j 2
          Issue Type: Improvement
          Components: Appenders, Core
    Affects Versions: 2.0-beta2
            Reporter: Das Archive
            Priority: Minor


Hello!

I am working on an extension which requires adding content to log events. As 
the method of adding it to the mdc has quite some overhead and the data I want 
to add is not really context-related, I was looking for an alternative and 
thought about subclassing Log4jLogEvent.
But as AsynchAppender uses the Log4jLogEvent serialize/deserialize methods this 
didn't work.

So I extended the serialize/deserialize methods to also work with subclasses.
I'll quickly explain the the changes in the patch (in order):
Log4jLogEvent.java:
- not related to the improvement: ndc is never written
- added a clone constructor to allow easy creation of subclasses Events based 
on Log4jLogEvents
- make "serialize" a dynamic method as we always have an Event to serialize and 
it allows overwriting the method in subclasses
- make use of the existing "readResolve" method instead of rinventing the weel
- LogEventProxy private -> protected to allow subclassing this inner class in 
subclasses
- change all instance field from private to protected to make life easier in 
subclasses
- I didn't see a reason why "readResolve" should return an Object instead of 
"Log4jLogEvent"
AsynchAppender.java:
- this is actually the only change necessary to make the changes work with the 
existing code-base


The only instance where subclassing still doesn't work (i.e. the subclass is 
removed) is in the MapRewritePolicy, but I don't think this will be a big issue 
and apart from adding a function to allow changing the Map in Log4jLogEvent I 
couldn't think of a way to solve this.

Please note, that I haven't had the time to actually test the modified code yet!

Best Regards,

Das

--
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to