[ 
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)

Reply via email to