Biz∫のWEBアプリケーションでログを出力したい

個人的にはJavaのアプリケーションでは、LOG4J以外のロギングを使用したことがありませんでした。
IntramartではSLF4J+LOGBACKの組み合わせログを出力しており、Biz∫でも使用されています。
ということで、今回開発側から「ログはどうやったら好きなファイルに出力できるの?」と質問を頂きましたので検証してみました。
と、その前にSLF4J+LOGBACKについてちょっとだけ予習をして、図にしました。

Intramart7.2(パッチなし)では、以下のライブラリバージョンで動作している模様。

さて、予習した内容から設定はlogback.xmlに書くということなので、このファイルを探しましたが見つかりません。
どうやらBiz∫では<IMインストールDIR>/conf/logの下に設定ファイルを置くと自動的にインクルードされるようです。
(Intramartも同じかどうか検証できてません。。。)

以下のような設定ファイルを<IMインストールDIR>/conf/logの下に置きます。

<included>
    <appender name="BIZ_MYAPP_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${im.home}/log/biz-integral/biz-myapp.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <FileNamePattern>${im.home}/log/biz-integral/biz-myapp%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <append>true</append>
        <ImmediateFlush>true</ImmediateFlush>
        <Encoding>UTF-8</Encoding>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%X{biz.user.id}][%X{biz.logingroup.id}][%X{biz.company.code}][%X{biz.process.id}]%msg%n</Pattern>
        </layout>
    </appender>

    <logger name="your.package.name"  additivity="false">
        <level value="TRACE" />
        <appender-ref ref="BIZ_MYAPP_LOG" />
    </logger>
</included>

以下は簡単なサンプルコードです。

package your.package.name;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyApp {
    protected static Logger logger = LoggerFactory.getLogger(MyApp.class);
    public void execute(String ename) {
        if (ename == null) {
            logger.error("This is a WARN Message! Name is null");
        }
        logger.trace("This is a Trace Message! Name is:" + ename);
    }
}

出力は以下のような感じになります。


[2010-09-06 15:33:26.258][aoyagi][default][0001][myApp#execute]This is a Trace Message! Name is: hogehoge

そういえば、LOG4Jと違ってFATALって無くなったんですね。
以下、SLF4J+LOGBACKのログレベルです。