2017-07-27 1 views
1

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クラスを追加しようとしました。それはエラーメッセージを削除しましたが、フェールオーバーアペンダはそれ以上にうまく動作していません。私はこのクラスのすべてがエラーを難読化していたという印象を持っています。

フェールオーバーアペンダを使用していたことはありますか?

ありがとうございました。

答えて

0

すぐにフォローアップしてください。

この問題の解決策は見つかりませんでした。 log4j2のバグと思われます。

最後に、javax.jmsパッケージを使用して短いクラスを開発し、ActiveMQへの接続を管理しました。

少なくとも完璧ではありませんが、少なくとも機能します。

関連する問題