[ 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