【发布时间】:2017-07-27 11:56:18
【问题描述】:
我在使 log4j2 与 ActiveMQ 一起工作时遇到了一些问题。
这是我的 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 秒自动重新连接时间(默认)后不会自动重新连接。更麻烦的是,我的文件附加程序在服务器关闭后不再工作。
我首先遇到了“没有与元素故障转移匹配的参数”详细信息here 的问题,并尝试添加注册“故障转移”元素的 FallBack 类。它确实删除了错误消息,但故障转移附加程序没有更好地工作。我的印象是这个类所做的一切都是混淆错误。
您在使用故障转移附加程序时遇到过什么运气吗?
感谢您的帮助。
【问题讨论】: