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

-[[Log4J徹底解説:http://www.nurs.or.jp/~sug/soft/log4j/log4j7.htm]]

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

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

Log4jのorg.apache.log4j.net.JMSAppender((org.apache.log4j.FileAppenderとかと同じいわゆるAppenderですね))を使用すると、
-Log4jのデバッグ文をJMSサーバのTopicにPublishする

ことができます。これを使うことで、ログ出力用のTopicを作成し、そのTopicをListenするMDBを作成して、そこでログを出力((そのログ出力にLog4jつかったら無限ループしたっ))する、とか、エラーイベントの時だけメール通知する、とかできそうです。

***設定ファイルの記述 [#x151877c]
いろいろ見てみた結果、以下のように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:http://www.jajakarta.org/log4j/jakarta-log4j-1.1.3/docs-ja/api/org/apache/log4j/spi/LoggingEvent.html]] です。



----
この記事は
#vote(おもしろかった[1],そうでもない[0])
#vote(おもしろかった[3],そうでもない[0])
-連打してログを出力されると、エラーになっちまう。 -- [[きの]] &new{2005-08-29 22:38:44 (月)};

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS