便利なコードパーツ集!

やまろうのプログラミングTips

Java

Websphereでcommons-loggingを使用する際の注意点

投稿日:

2008/10

commons-loggingからLog4jを使う場合、以下に示すような
「commons-logging.propertiesとlog4j.xmlをクラスパス上に配置」
します。

[commons-logging.properties]

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory

[log4j.xml]

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="appl" class="org.apache.log4j.ConsoleAppender">
<param name="target" value="System.err" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yy/MM/dd HH:mm:ss:SSS zzz}] %-5p %-18C{1} %-12M: %m%n" />
</layout>
</appender>
<appender name="apache" class="org.apache.log4j.ConsoleAppender">
<param name="target" value="System.out" />
</appender>
<category name="org.apache" additivity="false">
<level value="INFO" />
<appender-ref ref="apache" />
</category>
<root>
<level value="DEBUG" />
<appender-ref ref="appl" />
</root>
</log4j:configuration>

Webアプリケーションの場合はWEB-INF/classes直下に配置すればいいことになります。
しかし、Websphereで実行すると

「Logの設定が効かない!!?」

WebsphereはAPサーバー自体がcommons-loggingを使っているようで
APサーバーのcommons-logging.propertiesが先に読み込まれて有効になっているようです。

ということでWSAD上または管理コンソールで
アプリケーション・オプションのEAR、WARのクラス・ローダー・モードを
PARENT_FIRST → PARENT_LAST
に変更します。

スポンサーリンク



[実行結果]

[07/05/09 10:09:40:328 JST] 7970971 SystemOut O org.apache.commons.logging.impl.Log4JLogger
[07/05/09 10:09:40:328 JST] DEBUG SampleServlet doGet : DEBUGログです
[07/05/09 10:09:40:344 JST] INFO SampleServlet doGet : INFOログです
スポンサーリンク

-Java

Copyright© やまろうのプログラミングTips , 2020 AllRights Reserved Powered by AFFINGER4.