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

Ralph Goers commented on LOG4J2-3632:
-------------------------------------

We have had others try to do something similar. Dynamically creating a new 
log4j2.xml (or json or yaml) is indeed the best approach for doing this. It 
sounds like what you are looking for is a way to capture the current logging 
configuration? IMO, this is actually a great request as it makes sense for us 
to allow you to capture the "translated" configuration so that you can stop 
using the log4j 1 configuration file. I have to note though that your UI would 
need to be modified to edit a Log4j 2 configuration.  However, if the 
configuration has any Log4j 1 custom Appenders I don't think doing that will 
work as they are wrapped with classes that are not plugins and so cannot appear 
in a logging configuration file.

I should note that the original logging configuration file should always be 
able to be retrieved.

> Using log4j-1_2-api to load XML configuration - Logger.getAppenders() empty
> ---------------------------------------------------------------------------
>
>                 Key: LOG4J2-3632
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3632
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Log4j 1.2 bridge
>    Affects Versions: 2.19.0
>            Reporter: Jeff Thomas
>            Assignee: Piotr Karwasz
>            Priority: Major
>         Attachments: image-2022-11-13-02-02-03-595.png, 
> image-2022-11-13-02-05-42-235.png
>
>
> I have used the log4j 1.2 bridge XmlConfigurator to load a 1.2 XML 
> configuration and performed a `Configurator.reconfigure(configuration)`.
> Then I retrieved a logger using "Logger.getLogger(String)".
> When I then call 'Logger.getAppenders()" the returned enumeration is empty.
> Looking at the logger in the debugger I can see the attached Appenders in the 
> associated LoggerConfig.
> !image-2022-11-13-02-02-03-595.png!
> In `org.apache.log4j.Category` I stepped through and got to here which 
> returned an empty collection.
> !image-2022-11-13-02-05-42-235.png!
> I might be doing something wrong ... it has been known to happen. :)  But I 
> was expecting to get the two configured appenders "console" and "file" here.
> The "problem" _seems_ to be here with the stream filter:
> {code:java}
> return Collections.enumeration(appenders.stream()
>                     // omit native Log4j 2.x appenders
>                     .filter(AppenderAdapter.Adapter.class::isInstance)
>                     .map(AppenderWrapper::adapt)
>                     .collect(Collectors.toSet()));{code}
> The Javadoc in `Category` does say:
> {quote} Get all the Log4j 1.x appenders contained in this category as an 
> \{@link Enumeration}. Log4j 2.x appenders are omitted.
> {quote}
> But I did load the configuration with the Bridge and I was hoping my legacy 
> code would still get the Appenders as before.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to