Hello,

maybe I found an Issue using the FallbackErrorHandler of Log4j with multiple 
Logger instances.

Sorry, if my description is very long:

I have several queues that i want to log with their own priorieties. So I 
defined for every queue ist own logger.

I'm logging to a topic and in case this fails, i want to log to a file.

Therefore i configured my Appender this way:

<appender name="JMS_CORELOG"
                class="org.apache.log4j.net.JMSAppender">
                <errorHandler
                        class="org.apache.log4j.varia.FallbackErrorHandler">
                        <logger-ref ref="MSG_FLOW" />
                        <logger-ref ref="LOGGER_AC" />
                        <logger-ref ref="LOGGER_BD" />
                        <logger-ref ref="LOGGER_CA" />
                        <logger-ref ref="LOGGER_FM" />
                        <logger-ref ref="LOGGER_JK" />
                        <logger-ref ref="LOGGER_LH" />
                        <logger-ref ref="LOGGER_LO" />
                        <logger-ref ref="LOGGER_LX" />
                        <logger-ref ref="LOGGER_NH" />
                        <logger-ref ref="LOGGER_NZ" />
                        <logger-ref ref="LOGGER_OS" />
                        <logger-ref ref="LOGGER_OZ" />
                        <logger-ref ref="LOGGER_SA" />
                        <logger-ref ref="LOGGER_SK" />
                        <logger-ref ref="LOGGER_SQ" />
                        <logger-ref ref="LOGGER_TG" />
                        <logger-ref ref="LOGGER_TP" />
                        <logger-ref ref="LOGGER_UA" />
                        <logger-ref ref="LOGGER_US" />
                        <appender-ref ref="FILE" />
                </errorHandler>
                <param name="InitialContextFactoryName"
                        value="weblogic.jndi.WLInitialContextFactory" />
                <param name="ProviderURL" value="t3://localhost:7001" />
                <param name="TopicBindingName" value="jms/topic/DU_CORE" />
                <param name="TopicConnectionFactoryBindingName"
                        value="jms/TopicConnectionFactory" />
                <param name="LocationInfo" value="false" />
                <layout class="org.apache.log4j.PatternLayout">
                        <param name="ConversionPattern"
                                value="%d{yyyy.MM.dd HH:mm:ss,SSS} %-5p %m%n" />
                </layout>
        </appender>

Now it happens, when log4j is initializing ist configuration, the topic isn't 
reachable. So the FallbackErrorHandler switches the appender to file in all 
categories.

This causes the following behaviour:
Loading from XML the first Category MSG_FLOW it intializes the appender 
JMS_CORELOG. That fails and all Categories are switchet to FILE. Then the 
parsing of XML continues and my Category LOGGER_AC gets initialized.
DOMConfigurator.parseChildrenOfLoggerElement(Element catElement, Logger cat, 
boolean isRoot) calls now cat.removeAllAppenders(). But becuase of the 
FallbackErrorHandler LOGGER_AC has Appender FILE already set. So it gets closed.

This leads to the problem, that all Categories log to closed Appenders at the 
rest of time. :-(

Please advise.

Thank you.

Best regards
Christian Hübert

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to