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]