2006-12-26
_ WebSphre 6.0 で Commons-Logging 1.1 を利用する
WebSphere 6.0 で Commons-Logging (JCL) と Log4J 使おうと思ったらなんかうまく動かんのだけど,って聞かれたのでちょっくら調べてみた…って FAQ にあるじゃないの.Logging/FrequentlyAskedQuestions - Jakarta-commons Wiki の How Can I Use Log4j with Commons-Logging 1.1 on WebSphere 6.0? の項.
WebSphere で JCL を使う場合には,WAR クラスローダーのデリゲーションモードを「PARENT LAST(親が最後)」にするようにってのはすぐに調べがつく.(参考:IBM WSDD - クラスローダーとJ2EEパッケージング戦略を理解する - 第4回 - Japan) JCL 1.1 の場合はこれに加えて,commons-logging.properties に優先度 (priority) の設定をしてやる必要がある.priority キーの設定がない場合はデフォルトで 0.0 を設定し,同じ priority の場合は,先に読み込んだほうを優先するようになっている.クラスローダーのデリゲーションモードを「PARENT LAST(親が最後)」にしていても,WebSphere のもつ commons-logging.properties から順に読んでいるようで,priority を設定していないとアプリケーションで Log4J を使う設定をしていても,うまく動いてくれないということのようだ.
システムプロパティに org.apache.commons.logging.diagnostics.dest で STDOUT を設定すると,JCL の診断ログを出力できるようになるので,このへんの動きをちょっと追いたい場合は,診断ログを出すようにしておくと便利.