You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2022/02/17 23:41:00 UTC

[jira] [Commented] (LOG4J2-3193) ConfigurationFactory cannot find config file property normalized by EnvironmentPropertySource

    [ https://issues.apache.org/jira/browse/LOG4J2-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17494291#comment-17494291 ] 

ASF subversion and git services commented on LOG4J2-3193:
---------------------------------------------------------

Commit b89b8983f6df451c4708362684ae046371340d7e in logging-log4j2's branch refs/heads/release-2.x from Ralph Goers
[ https://gitbox.apache.org/repos/asf?p=logging-log4j2.git;h=b89b898 ]

LOG4J2-3193 - Add unit test to validate loading via the system property works


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