Pooja Pandey created LOG4J2-3426:
------------------------------------
Summary: Log4j 1.x bridge Logger.getAppender returns a wrapped
AppenderAdapter
Key: LOG4J2-3426
URL: https://issues.apache.org/jira/browse/LOG4J2-3426
Project: Log4j 2
Issue Type: Bug
Reporter: Pooja Pandey
In our code, we have a custom logger and a custom multiprocess rolling
FileAppender as below shown in below code snippet.
For some processing, we need to get appender from logger, so we call
Logger.getAppender() but with log4j1.x bridge it is returning AppenderWrapper
unlike log4j1.x where we used to get an Appender.
We need to typecast returned value to FileAppender but since now it
AppenderWrapper, so it is throwing exception "java.lang.ClassCastException:
org.apache.log4j.bridge.AppenderWrapper cannot be cast to
org.apache.log4j.FileAppender".
To fix cast exception we are overriding getAppender in our customLogger as
shown below, however we are still having some minor issues in reading property
value but may be this new issue is due to some other problems. I am still
trying to figure out.
I am creating this Jira ticket with a hope that if there is a possibility then
may be log4j1.x bridge can be modified to provide this conversion instead we
override this method in our custom logger.
@Override public Appender getAppender(final String name) \{
AppenderWrapper appenderWrapper = (AppenderWrapper) super.getAppender(name);
return
((AppenderAdapter.Adapter)appenderWrapper.getAppender()).getAppender(); }
public class CustomLogger extends Logger implements java.io.Serializable {}
public class CustomMultiProcessRollingAppender extends FileAppender \{ }
--
This message was sent by Atlassian Jira
(v8.20.1#820001)