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

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

To answer your question, Log4j 2 does support custom Log4j 1 appenders. It uses 
a bridge so that Log4j 2 can call them. Those are the only appenders that will 
be returned. Returning the AdapterWrapper wouldn't make sense as any code 
looking for those Appenders almost certainly is expecting the real Appender, 
not an adapter.

To be clear, the Log4j team discourages users from manipulating the 
configuration at runtime for a variety of reasons. Instead, we try to make it 
possible to accomplish what is desired through dynamic means built into the 
configuration.

> 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