我在使用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?
感谢您的帮助。