JWT007 opened a new issue, #3449:
URL: https://github.com/apache/logging-log4j2/issues/3449
Log4j 2.24.3
------
Repeated calls to the `Configuration#doConfigure` method discard appenders
(and maybe other inforrmation).
In my example, I have a configuration with two defined appenders ("CONSOLE"
and "RollingFile").
Taken from another test case, lets assume I use a BuiltConfiguration with a
ConfigurationBuilder and create the and initialized configuration and then
initialize it again (the first initialization happens in the build method if I
don't call `builder.build(false)`. (Admittedly, this is redundant and strictly
incorrect; however, it is possible and I found an instance of this in the
`Configurator1Test` unit-test.)
```
final Configuration config = builder.build();
config.initialize();
```
In the first pass, the rootNode tree is processed and through a call to
`PluginElementVisitor#visit(....)` all nested nodes are removed and the top
level child node is assigned an built object.

If a second pass is made, the `config.initialize()` method performs no check
to see if it has already been initialized (`State.INITIALIZED` or later). This
results in another runthrough of `doConfigure()` and now the child nodes are
missing because they have been _visited_ and _removed_,
Here before the 2nd-pass of `createConfiguration`on the "Appenders" node:

Now however, due to the missing child information, the object list of
configured appenders is empty and the two previously defined appenders are gone.

So the second configure cleared the previous run's appenders (and possibly
other nested configuration).
I *think* the easy solution would be to test the state in the `initialize`
method and if not INITIALIZING just log and return; however, I don't know if
that would have other side-efffects.
--
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]