ページの先頭行へ戻る
Interstage Business Application Server アプリケーション開発ガイド
FUJITSU Software

19.4.2 ユーザ作成のログ出力クラスの作成(Java)

LogComposer派生クラスを作成することで、メッセージの編集を行う処理を記述することが可能です。

派生クラスでは、メッセージの編集を行った後に、LogComposerクラスのprintlnメソッドを呼び出し、ログ出力を行います。

派生クラスの作成

メッセージの編集を行うようprintlnメソッドをオーバーライドし、ログを出力するLogComposer派生クラスの作成例を以下に示します。

/**
 * メッセージの編集を行う派生クラスの作成例です。
 * この例では、基底クラスに LogComposerを用いています。
 * 再定義するメソッドは、利用するアプリケーションの要件により異なります。
 */
package my.sample;
import com.fujitsu.uji.log.LogComposer;

public class MyLogComposer extends LogComposer {
    public MyLogComposer() {
    }
    public void println(int level, Object obj, int back) {
        // 指定のログレベルがログ出力対象になっているかを判断します。
        if( isLogged(level) ) {
            // メッセージの編集を行います。
            StringBuffer buf = new StringBuffer();
            buf.append(" PREFIX TEXT ");
            buf.append( String.valueOf(obj) );
            // 編集後に、基底クラスのメソッドを呼び出します。
            output(level, buf.toString(), back);
        }
    }
}

ユーザ独自のメソッドを定義し、メッセージの編集を行ってprintlnメソッドを呼び出し、ログを出力するLogComposer派生クラスの作成例を以下に示します。

/**
 * メッセージの編集を行う派生クラスの作成例です。
 * この例では、基底クラスに LogComposerを用いています。
 */
package my.sample;
import com.fujitsu.uji.log.LogComposer;

public class MyLogComposer2 extends LogComposer {
    public MyLogComposer2() {
    }
    public void myPrintln(int level, Object obj1, Object obj2, int back) {
        // 指定のログレベルがログ出力対象になっているかを判断します。
        if( isLogged(level) ) {
            // メッセージの編集を行います。
            StringBuffer buf = new StringBuffer();
            buf.append( String.valueOf(obj1) );
            buf.append( "," );
            buf.append( String.valueOf(obj2) );
            // 編集後に、基底クラスのメソッドを呼び出します。
            println(level, buf.toString(), back);
        }
    }
}

注意

LogComposer派生クラスを作成する場合は、デフォルトコンストラクタを定義してください。

また、基底クラスのメソッドをオーバーライドしたクラスを標準ログで使用する場合、アプリケーション連携実行基盤からもオーバーライドしたメソッドが呼び出されます。

作成した派生クラスをログ定義ファイルに指定する定義例を以下に示します。

<logConfig>
  <!-- 作成した派生クラスを指定 -->
  <logComposer name="Log1" class="my.sample.MyLogComposer">
    <output name="myStdOut1" type="stdout"/>
  </logComposer>
  <logComposer name="Log2" class="my.sample.MyLogComposer2">
    <output name="myLogOut" type="logComposer">
      <param name="target" value="Log1"/>
    </output>
  </logComposer>
        ....
</logConfig>