[ 
https://issues.apache.org/jira/browse/LOG4J2-1837?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mal Graty updated LOG4J2-1837:
------------------------------
    Description: 
The issue (LOG4J2-1715) sought to make the {{NdcPatternConverter}} GC-free, but 
it looks as though that work doesn't get used. The interface 
{{StringBuilderFormattable}} is never checked for when formatting in the 
convertor, and as a result the builder is left to fend for itself, resorting 
ultimately to {{String.valueOf}}.

I believe the code should end up looking something like this.

{code:title=NdcPatternConverter.java|borderStyle=solid}
public void format(final LogEvent event, final StringBuilder toAppendTo) {
    ThreadContext.ContextStack stack = event.getContextStack();
    if (stack instanceof StringBuilderFormattable) {
        ((StringBuilderFormattable) stack).formatTo(toAppendTo);
    } else {
         toAppendTo.append(stack);
    }
}
{code}

Happy to submit a patch if this makes sense or for someone else to. Still 
getting my head around Log4j internals so confirmation of this would be helpful.

  was:
The issue (LOG4J2-1715) sought to make the {{NdcPatternConverter}} GC-free, but 
it looks as though that work doesn't get used. The interface 
{{StringBuilderFormattable}} is never checked for when formatting in the 
convertor, and as a result the builder is left to fend for itself, resorting 
ultimately to {{String.valueOf}}.

I believe the code should end up looking something like this.

{code:title=NdcPatternConverter.java|borderStyle=solid}
public void format(final LogEvent event, final StringBuilder toAppendTo) {
    ThreadContext.ContextStack stack = event.getContextStack();
    if (is instanceof StringBuilderFormattable) {
        ((StringBuilderFormattable) stack).formatTo(toAppendTo);
    } else {
         toAppendTo.append(stack);
    }
}
{code}

Happy to submit a patch if this makes sense or for someone else to. Still 
getting my head around Log4j internals so confirmation of this would be helpful.


> NdcPatternConverter isn't GC-free
> ---------------------------------
>
>                 Key: LOG4J2-1837
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1837
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Pattern Converters
>    Affects Versions: 2.8, 2.8.1
>            Reporter: Mal Graty
>            Priority: Minor
>
> The issue (LOG4J2-1715) sought to make the {{NdcPatternConverter}} GC-free, 
> but it looks as though that work doesn't get used. The interface 
> {{StringBuilderFormattable}} is never checked for when formatting in the 
> convertor, and as a result the builder is left to fend for itself, resorting 
> ultimately to {{String.valueOf}}.
> I believe the code should end up looking something like this.
> {code:title=NdcPatternConverter.java|borderStyle=solid}
> public void format(final LogEvent event, final StringBuilder toAppendTo) {
>     ThreadContext.ContextStack stack = event.getContextStack();
>     if (stack instanceof StringBuilderFormattable) {
>         ((StringBuilderFormattable) stack).formatTo(toAppendTo);
>     } else {
>          toAppendTo.append(stack);
>     }
> }
> {code}
> Happy to submit a patch if this makes sense or for someone else to. Still 
> getting my head around Log4j internals so confirmation of this would be 
> helpful.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to