[
https://issues.apache.org/jira/browse/LOG4J2-2196?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16342472#comment-16342472
]
Raman Gupta commented on LOG4J2-2196:
-------------------------------------
[~garydgregory] I investigated this a bit more and found the problem:
The issue is in the PatternParser.parse method -- there is logic that
determines whether the pattern will handle exceptions or not, and if it does
not, it consults the `alwaysWriteExceptions` property to determine whether to
add the Exception anyway. That logic does not test for
ThrowablePatternConverter's embedded inside
VariablesNotEmptyReplacementConverter's, and therefore thinks that the pattern
does not handle Exceptions. If alwaysWriteExceptions is true, it therefore
causes the Exception to be double-written.
So the obvious work-around to this bug in the parser is simply to set
`alwaysWriteExceptions` to false.
> Pattern layout %notEmpty does not work for exceptions
> -----------------------------------------------------
>
> Key: LOG4J2-2196
> URL: https://issues.apache.org/jira/browse/LOG4J2-2196
> Project: Log4j 2
> Issue Type: Bug
> Components: Pattern Converters
> Affects Versions: 2.10.0
> Reporter: Raman Gupta
> Priority: Major
>
> Using a pattern layout that contains something like:
> {{%notEmpty\{EXCEPTION: %throwable}}}
> kind of works. However, when the Exception is not empty, it prints the
> Exception to the appender twice: once in the proper position within the
> pattern, and then again completely separately, with a newline before the
> second output.
> Note that the second output completely ignores any formatting specifications,
> such as separator or level-based ansi coloring – it seems as if the output of
> Exception.toString() had been sent to the appender directly).
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)