[
https://issues.apache.org/jira/browse/LOG4J2-100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13868700#comment-13868700
]
Ralph Goers commented on LOG4J2-100:
------------------------------------
I'm still not sure. What has been asked for sounds like a valid use case we
would want to support. I'm just not sure what the proper solution is.
However, I do feel pretty bad because I have a suspicion that Jan's question on
the dev list was never answered.
> 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
> Labels: patch
> Attachments: ClassChangingAppender.java,
> allow_log_event_subclass_serialization.patch
>
>
> 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 was sent by Atlassian JIRA
(v6.1.5#6160)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]