Top / J2EE / JMS / Log4jでログをPublishする

アプリケーションの稼働ログなどをキューに放って一カ所に収集しておく、とかエラーが発生したときに通知してもらう、なんてことはよくある要件ですが、Log4jにはちょうどその要件を満たしてくれそうな機能があります。

にホントに徹底解説されていたので、参考にさせてもらいました。

概要とか

要件としては、今まで出していたLog4jのデバッグ文を変更することなしに、出力先をJMSのTopicにする、またはエラーログが発生したときだけなんかの処理を起動する、とかですね。

Log4jのorg.apache.log4j.net.JMSAppender*1を使用すると、

  • Log4jのデバッグ文をJMSサーバのTopicにPublishする

ことができます。これを使うことで、ログ出力用の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 です。


この記事は

選択肢 投票
おもしろかった 3  
そうでもない 0  
  • 連打してログを出力されると、エラーになっちまう。 -- きの? 2005-08-29 22:38:44 (月)

Top / J2EE / JMS / Log4jでログをPublishする

現在のアクセス:6213


*1 org.apache.log4j.FileAppender?とかと同じいわゆるAppenderですね
*2 そのログ出力にLog4jつかったら無限ループしたっ

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-06-20 (月) 18:59:19 (2983d)