Log4j2をActiveMQと連携させるのに問題があります。ここでフェイルオーバーアペンダーのバックアップ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は60秒の自動再接続時間(デフォルト)後に自動再接続しません。もっと困ったことに、私のファイルアペンダーはサーバーのシャットダウン後にはもう動作していません。
「Failover要素に一致するパラメータがありません」という問題が最初に発生しました。詳細はhereです。「Failover」要素を登録しているFallBackクラスを追加しようとしました。それはエラーメッセージを削除しましたが、フェールオーバーアペンダはそれ以上にうまく動作していません。私はこのクラスのすべてがエラーを難読化していたという印象を持っています。
フェールオーバーアペンダを使用していたことはありますか?
ありがとうございました。