JWT007 opened a new issue, #3431:
URL: https://github.com/apache/logging-log4j2/issues/3431
Log4j 2.24.3 - AbstractConfiguration
If I create a BuiltConfiguration that defines a Configuration 'name' (i.e.
"FooBar") and no loggers, the `AbstractConfigurat#doConfigure()` method calls
the `setToDefault()` method for example if the following conditions are met:
* no loggers are defined
* no root logger is defined
For example,
```
if (!setLoggers) {
LOGGER.warn("No Loggers were configured, using default. Is the Loggers
element missing?");
setToDefault();
return;
}
```
The first thing the `setToDefault` method does is clear the given name and
replace it with a default.
```
protected void setToDefault() {
// LOG4J2-1176 facilitate memory leak investigation
setName(DefaultConfiguration.DEFAULT_NAME + "@" +
Integer.toHexString(hashCode()));
...
}
```
It should however (IMHO) be a perfectly valid scenario to create a
configuration with no content but with a custom name - specifically where I
discovered this in testing. But maybe I want to only define global filters and
otherwise rely on default behaviour.
In my opinion the name should only be set here if no name has yet been set.
Generally it should be OK to set a configuration with no loggers and no root
logger. Consider a CompositeConfiguration named "FooBar" with an initially
empty BuiltConfiguration. Some runtime event might create appenders and
loggers dynamically (ie. for a new service). But it is no longer possible to
lookup that configuration by name because a default has been applied.
NOTE: The referenced bug/fix
(https://issues.apache.org/jira/browse/LOG4J2-1176) doesn't seem to make any
mention of the name being a problem.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]