[ 
https://issues.apache.org/jira/browse/LOG4J2-100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13490022#comment-13490022
 ] 

Gary Gregory commented on LOG4J2-100:
-------------------------------------

Don't be discouraged, we're all busy, I know I am ;)
                
> 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: allow_log_event_subclass_serialization.patch, 
> ClassChangingAppender.java
>
>
> 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