[
https://issues.apache.org/jira/browse/LOG4J2-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17446462#comment-17446462
]
David commented on LOG4J2-3193:
-------------------------------
I should be able to do that. Can you confirm that I'd also need to reverse the
order of the TreeSet as Piotr suggested above? In my debugging, the tokenized
map does have the "wrong" value from the properties file, but I believe if the
EnvironmentPropertySource were applied later it would override the same key in
that map and I'd get the right value.
Also, would I need to sign the Apache ICLA (and have my employer sign the CLA)
before the PR is merged? Or are those only needed for people merging into
'master'?
> ConfigurationFactory cannot find config file property normalized by
> EnvironmentPropertySource
> ---------------------------------------------------------------------------------------------
>
> Key: LOG4J2-3193
> URL: https://issues.apache.org/jira/browse/LOG4J2-3193
> Project: Log4j 2
> Issue Type: Bug
> Components: Configuration
> Affects Versions: 2.14.1
> Reporter: David
> Priority: Major
>
> I am setting `LOG4J_CONFIGURATION_FILE` as an environment variable, and also
> have a `log4j2.component.properties` file that specifies a different value
> for `log4j2.configurationFile`.
> When `PropertyUtils$Environment.reload` [handles each key value pair and
> normalizes the
> key|https://github.com/apache/logging-log4j2/blob/rel/2.14.1/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java#L466],
> `EnvironmentPropertySource.getNormalForm` [normalizes the environment
> variable|https://github.com/apache/logging-log4j2/blob/rel/2.14.1/log4j-api/src/main/java/org/apache/logging/log4j/util/EnvironmentPropertySource.java#L61]
> to `LOG4J_CONFIGURATION_FILE` but `PropertiesPropertySource.getNormalForm`
> [normalizes the property from the
> file|https://github.com/apache/logging-log4j2/blob/rel/2.14.1/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesPropertySource.java#L52]
> as `log4j2.configurationFile`. So _both_ values end up in the `normalized`
> Map.
> Then when `ConfigurationFactory` [gets the configuration file
> property|https://github.com/apache/logging-log4j2/blob/rel/2.14.1/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java#L398]
> it only looks for `log4j.configurationFile` and ignores the
> LOG4J_CONFIGURATION_FILE environment variable.
> This seems to contradict the
> [documentation|https://logging.apache.org/log4j/2.x/manual/configuration.html#SystemProperties]
> which says that environment variables should take precedence over properties
> files.
> If I'm not mistaken and this is truly a bug, then I'd be happy to work on a
> PR if it would get it resolved more quickly. I would just need some guidance
> about the proper solution. Should `EnvironmentPropertySource.getNormalForm`
> be updated to produce the same style output as
> `PropertyPropertySource.getNormalForm`? The [tests
> indicate|https://github.com/apache/logging-log4j2/blob/rel/2.14.1/log4j-api/src/test/java/org/apache/logging/log4j/util/EnvironmentPropertySourceTest.java#L43]
> that the current behavior is not an accident, so I'm unsure what ought to be
> done.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)