アプリケーションの稼働ログなどをキューに放って一カ所に収集しておく、とかエラーが発生したときに通知してもらう、なんてことはよくある要件ですが、Log4jにはちょうどその要件を満たしてくれそうな機能があります。 にホントに徹底解説されていたので、参考にさせてもらいました。 概要とか †要件としては、今まで出していたLog4jのデバッグ文を変更することなしに、出力先をJMSのTopicにする、またはエラーログが発生したときだけなんかの処理を起動する、とかですね。 Log4jのorg.apache.log4j.net.JMSAppender*1を使用すると、
ことができます。これを使うことで、ログ出力用のTopicを作成し、そのTopicをListenするMDBを作成して、そこでログを出力*2する、とか、エラーイベントの時だけメール通知する、とかできそうです。 設定ファイルの記述 †いろいろ見てみた結果、以下のようにlog4j.xmlを設定すれば良さそうです。 <appender name="JMS" class="org.apache.log4j.net.JMSAppender"> <param name="InitialContextFactoryName" value="com.ibm.websphere.naming.WsnInitialContextFactory" /> <param name="TopicConnectionFactoryBindingName" value="Sample/JMS/TCF" /> <- Factoryの名前 <param name="TopicBindingName" value="topic/MyTopic" /> <- Topicの名前 <param name="LocationInfo" value="true" /> </appender> こうすることで、Log4jのログ出力メソッドを使うとTopicにログデータがPublishされました!! ちなみにPublishされるMessageの型はObjectMessage?であり、getObjectで取得できるインスタンスの型は org.apache.log4j.spi.LoggingEvent です。 この記事は
現在のアクセス:7714 |