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

Piotr Karwasz commented on LOG4J2-3632:
---------------------------------------

[~JWT007],

The current {{org.apache.log4j.Category#getAllAppenders()}} code was written as 
a response to LOG4J2-3440. Check the discussion there to see the rationale 
behind it.

This kind of methods is not part of what we consider to be the API part of 
Log4j 1.x, it is part of the "implementation" part. Therefore there is no 
corresponding method in the Log4j2 API nor any modern logging API I know.

Can you explain how did you use {{Category#getAllAppenders()}}? Chances are, 
you can replace the code with an appropriate configuration. Otherwise you need 
to write code, which is specific to a chosen implementation of the Log4j2 API, 
which is never a good idea.

> 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