2017-07-27 17 views
1

我在使用ActiveMQ处理log4j2时遇到了一些麻烦。故障转移Appender备份JMS Appender - 没有匹配元素故障转移的参数

这里是我的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在60s自动重新连接时间(默认)后不会自动连接。更麻烦的是,服务器关闭后,我的文件appender不再工作了。

我首先遇到了“没有匹配元素故障转移的参数”的详细问题here,并尝试添加注册“故障转移”元素的FallBack类。它确实删除了错误消息,但故障转移appender无法正常工作。我有这样的印象,这个班所做的就是混淆错误。

你有没有幸运地使用故障转移appender?

感谢您的帮助。

回答

0

只是一个快速跟进。

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

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

不完美,但至少,它的工作原理。