Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第2部 Apcoordinatorコアの機能> 第4章 APIを使ったプログラミング> 4.2 アプリケーションログ

4.2.1 ログ機能(update)

■ログ出力の基本操作

ログを出力するためには、LogComposerオブジェクトを使用します。これはアプリケーションクラスまたはDispatchContextから参照可能です。

import com.fujitsu.uji.log.*;
public class SampleHandler extends com.fujitsu.uji.GenericHandler
{
    ....

    public void startup(DispatchContext context) {
        ....
        LogComposer lc = context.getApplicationProfile().getLogComposer();
        lc.println("処理を開始");
    }
}

■ログ出力機能のカスタマイズ

LogComposerオブジェクトは、アプリケーションクラスで任意に設定することができます。 ApplicationProfileクラスのnewLogComposerをオーバライドし、LogComposerオブジェクトを返すことで、ログのフォーマットや出力先を変えることができます。 デフォルトでは、キュー有効で、標準出力に日付付きメッセージを出力します。

public class SampleApplication extends com.fujitsu.uji.ApplicationProfile
{
    public LogComposer newLogComposer() {
        LogComposer lc;
        try {
            lc = LogComposer.getFileOutputInstance("c:\\myapp\\mylog.txt", true, new LineLogFormat("%d %m"));
        } catch(IOException e) {
            return null; // デフォルトを使用
        }
        lc.setQueueSize(1000);
        lc.enableQueue();
        lc.setLogLevel(9);
        return lc;
    }
}

ログ出力を無効にする場合は、空のLogComposerオブジェクトを返します。

    public LogComposer newLogComposer() {
        return new LogComposer();
    }

■ログのレベル

Apcoordinatorのログには重要度のレベルを設定することができます。ログのレベルは0を最重要とし、数が大きくなるほど重要度が下がります。 レベルは任意に設定できます。
以下は、Apcoordinatorで使用しているレベルです。
レベル出力するログ説明
3: ApcoordinatorのエラーログのレベルUJIで始まるエラーコードとメッセージを出力
10: Apcoordinatorのインフォメーションログのレベル内部の実行状況を表すログを出力
20: ApcoordinatorのトレースログのレベルデータBeanのダンプや詳細な実行状況を表すログを出力
注意
Apcoordinatorが出力するログは、機能の追加や改善などにより、将来、変更される場合があります。
以下は、デフォルトで定義するログのレベルです。
レベル出力するログ説明
0: 最重要のログユーザアプリケーションが出力するログで最重要のレベルとして利用
5: ログレベル未指定メッセージのデフォルトレベルの初期値デフォルトの出力レベル
ログのレベルは、表示時に指定します。

        LogComposer lc = context.getApplicationProfile().getLogComposer();
        lc.println(7, "処理を開始");

レベルを指定しないとデフォルトのレベルが使用されます。デフォルトレベルの初期値は5ですが、setDefaultLevelメソッドで設定を変更できます。

        lc.setDefaultLevel(7);
        lc.println("処理を開始");

ログの出力レベルを設定することによって、不要なログ出力を抑制することができます。 デフォルトでは9(レベル9以下のログのみ出力)となっています。

        lc.setLogLevel(5);       // レベル5以下のログを出力

ログ出力レベルは初期化パラメタ、および、ログ定義ファイルでも設定することができます。ただし、setLogLevelメソッドでログ出力レベルが設定されている場合は、そちらが優先されます。初期化パラメタについては初期化パラメタを参照してください。ログ定義ファイルについては定義ファイルを用いたログ出力を参照してください。以下はWebアプリケーションでweb.xmlファイルにログ出力レベルを定義する例です。

<web-app>
  <context-param>
    <param-name>logLevel</param-name>
    <param-value>5</param-value>
  </context-param>
</web-app>

ログ出力のために文字列化の処理を行う場合、予めログレベルを判断することによって不要な処理を除外することができます。

        int level = 5;
        if(lc.isLogged(level)) {
            String message = "文字列の" + a + "演算は" + b + "ハイコスト";
            lc.println(level, message);
        }

■フォーマットの設定

LineLogFormatオブジェクトは、ログ出力のフォーマットを設定します。LogComposerオブジェクト作成時に任意のフォーマットを指定することができます。

        lc = LogComposer.getFileOutputInstance("c:\\myapp\\mylog.txt", true,
                        new LineLogFormat("%d %m"));

以下の指定により、システム情報を表示することができます。なお、コンテキストIDは、DispatchContextクラスから参照したLogComposerオブジェクトを使用した場合に出力されます。
%mメッセージ本文
%iコンテキストID
%d時刻
%tスレッド名
%sメソッド名
%lログレベル
%%%記号を表示する
例として"%d %m"の指定では以下のようなログが出力されます。
2001/01/05 16:47:49 uji:no entry in commands.map for TestUseBean.dataBean1;submit

目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005