故障转移Appender备份JMS Appender - 没有匹配元素故障转移的参数

时间:2017-07-27 11:56:19

标签: java jms activemq log4j2

我在使用ActiveMQ时使用log4j2时遇到了一些麻烦。

这是我的log4j2.xml:

<Configuration>
<ThresholdFilter level="all"/>
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%m%n"/>
                <Filters>
                    <ThresholdFilter level="info" />
                </Filters>
        </Console>

        <File name="baseLog" filename="\\\\p02630\\c$\\tmp\\logs\\logws-gendb.log">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
              </PatternLayout>
            <Filters>
                <ThresholdFilter level="error"/>
            </Filters>
        </File>

    <JMS name="AMQError" providerurl="tcp://169.3.200.150:61616" password="admin" userName="admin">
        <factoryName>org.apache.activemq.jndi.ActiveMQInitialContextFactory</factoryName>
        <factoryBindingName>ConnectionFactory</factoryBindingName>
        <TopicBindingName>logError</TopicBindingName>
    </JMS>
    <Failover name="FailOverAMQ" primary="AMQError">
        <Failovers>
            <appender-ref ref="baseLog"/>
        </Failovers>
    </Failover>     
</Appenders>
<Loggers>
    <root>
        <AppenderRef ref="STDOUT" />
        <AppenderRef ref="baseLog" />
        <AppenderRef ref="FailOverAMQ" />
    </root>
</Loggers>
</Configuration>

目标是能够在ActiveMQ中记录错误。但是,如果/当AMQ服务器关闭时,我希望记录器能够自动重新连接并仍然在文件Appender中记录错误。

服务器运行时,一切正常。但是当我关闭服务器,也没有关闭ActiveMQ(正常),Appender文件也没有工作以及服务器恢复时,log4j在60秒自动重新连接时间后没有自动连接(默认)。更令人不安的是,我的文件追加器在服务器关闭后不再工作了。

我首先遇到的问题是&#34;没有参数匹配元素故障转移&#34;详细here并尝试添加FallBack类注册&#34; Failovers&#34;元件。它确实删除了错误消息,但故障转移appender无法正常工作。我觉得这个课程的所有内容都是混淆错误。

您是否有幸使用故障转移附加程序?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

快速跟进。

我找不到解决这个问题的方法。似乎是log4j2中的一个错误。

最后,我使用javax.jms包开发了一个短类来管理我与ActiveMQ的连接。

不完美但至少是有效的。