我在使用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无法正常工作。我觉得这个课程的所有内容都是混淆错误。
您是否有幸使用故障转移附加程序?
感谢您的帮助。
答案 0 :(得分:0)
快速跟进。
我找不到解决这个问题的方法。似乎是log4j2中的一个错误。
最后,我使用javax.jms包开发了一个短类来管理我与ActiveMQ的连接。
不完美但至少是有效的。