[
https://issues.apache.org/jira/browse/LOG4J2-1589?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15823881#comment-15823881
]
Dmitriy Neretin commented on LOG4J2-1589:
-----------------------------------------
Hello [[email protected]], [~garydgregory]
I'v experimented with a source code for a while to understand how it actually
works at all and the substitute algorithm in the StrSubstitutor is not the
simplest :) What I found out is - it's not a missing feature. It's only a bug.
I will provide detailed description later (what was a problem and how to fix
it). The problem is in the StrSubstitutor. If I activate the
'enableSubstitutionInVariables' field it solves the problem. But there are some
points I not understand:
- Why is it always deactivated? With deactivated I mean 'false'. The setter
method is not used. So the value will be never changed.
- I didn't see the possibility to activate this field by configuration, so I
changed it directly in the code, installed it in the local maven repo and
worked with local framework version
- I have fear, if I activate the field it can produce some regression issues...
And I don't understand the framework good enough to prevent it :)
My personal proposal: we left the field as is (false) but additionally check
the property if the default property value is also a variable: ":-${" and only
then we set it to true. After substitution we set it to false again. If you
think it is a reasonable solution (or maybe you have a better solution) I could
provide a patch.
> Value nesting during property substitution
> ------------------------------------------
>
> Key: LOG4J2-1589
> URL: https://issues.apache.org/jira/browse/LOG4J2-1589
> Project: Log4j 2
> Issue Type: Wish
> Components: Configurators
> Affects Versions: 2.5
> Reporter: Dmitriy Neretin
> Priority: Minor
> Labels: features
>
> There is already a good description what "default value nesting" is:
> http://logback.qos.ch/manual/configuration.html#nestedSubst
> It is partially implemented in the log4j but it can still be improved.
> Example from that page above:
> - "${id:-${userid}}" If the *id* variable is not set, *userid* will be used.
> At the moment it works only if the default value is a concrete value:
> - ${path:-/only/concrete/path/can/be/used/here}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]