You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Donatien RIVIERE (Jira)" <ji...@apache.org> on 2020/12/03 10:35:00 UTC
[jira] [Updated] (LOG4J2-2968) Placeholder with default value
containing "}"
[ https://issues.apache.org/jira/browse/LOG4J2-2968?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Donatien RIVIERE updated LOG4J2-2968:
-------------------------------------
Description:
StrSubstitutor does not properly handle a variable default value that contains "}" character because it is interpreted as end of the variable default value.
However, this character is part of the pattern layout format, so it is very common to expect defining a variable allowing to set a pattern, and fallback to a default value containing this kind of character.
Example:
{code:yaml}
pattern: ${env:MY_PATTERN:-%date{DEFAULT} %level %m%n}
{code}
This pattern is interpreted as below which is obviously wrong (and not a valid pattern format).
{code:java}
%date{DEFAULT %level %m%n}
{code}
It would be nice to be able to protected the default value with quotes or any begin/end character.
Please find the JUnit test case in attachment.
was:
StrSubstitutor does not properly handle a variable default value that contains "}" character because it is interpreted as end of the variable default value.
However, this character is part of the pattern layout format, so it is very common to expect defining a variable allowing to set a pattern, and fallback to a default value containing this kind of character.
Example:
{code:yaml}
pattern: $\{env:MY_PATTERN:-%date{DEFAULT} %level %m%n}
{code}
This pattern is interpreted as below which is obviously wrong (and not a valid pattern format).
{code:java}
%date{DEFAULT %level %m%n}
{code}
It would be nice to be able to protected the default value with quotes or any begin/end character.
Please find the JUnit test case in attachment.
> Placeholder with default value containing "}"
> ---------------------------------------------
>
> Key: LOG4J2-2968
> URL: https://issues.apache.org/jira/browse/LOG4J2-2968
> Project: Log4j 2
> Issue Type: Bug
> Components: Lookups
> Affects Versions: 2.14.0, 2.13.3
> Environment:
> Reporter: Donatien RIVIERE
> Priority: Major
> Attachments: StrSubstitutorPatternDefaultValueTest.java
>
>
> StrSubstitutor does not properly handle a variable default value that contains "}" character because it is interpreted as end of the variable default value.
> However, this character is part of the pattern layout format, so it is very common to expect defining a variable allowing to set a pattern, and fallback to a default value containing this kind of character.
> Example:
> {code:yaml}
> pattern: ${env:MY_PATTERN:-%date{DEFAULT} %level %m%n}
> {code}
> This pattern is interpreted as below which is obviously wrong (and not a valid pattern format).
> {code:java}
> %date{DEFAULT %level %m%n}
> {code}
> It would be nice to be able to protected the default value with quotes or any begin/end character.
> Please find the JUnit test case in attachment.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)