便利なコードパーツ集!

やまろうのプログラミング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
に変更します。

package sample;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class SampleServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    resp.getWriter().print("<h1>SampleServlet</h1>");
    Log logger = LogFactory.getLog(this.getClass());
    System.out.println(logger.getClass().getName());
    logger.debug("DEBUGログです");
    logger.info("INFOログです");
  }
}

[実行結果]

[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 , 2022 AllRights Reserved Powered by AFFINGER4.