David created LOG4J2-3193:
-----------------------------

             Summary: 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


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

Reply via email to