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

第2部 Apcoordinatorコアの機能> 第5章 アプリケーションログ

5.2 ログのキューイング

アプリケーションログを出力する場合、ログの出力を行っている間にアプリケーションの処理が中断します。ログのキューイングを行うことで、アプリケーション処理の完了後適当なタイミングでログを出力することができます。この機能を使うことで、アプリケーションのレスポンスに影響なくログの出力を行うことができます。 Apcoordinatorのログ機構では、デフォルトでログのキューイングを有効にしています。

■キューの有効・無効

メッセージの順序をアプリケーション内で限定したい場合は、一時的にキューを無効にします。 メッセージがキューに溜まっている場合は、出力を待つことになります。

        LogComposer lc = context.getApplicationProfile().getLogComposer();
        synchronized(lc) {
            lc.disableQueue(true);
            lc.println(3, "重要なメッセージ");
            lc.enableQueue();
        }

あらかじめアプリケーションログで利用するキューを無効にすることが可能です。 初期化パラメタ"uji.log.enablecache"へfalseを指定するとキャッシュを無効にします。初期化パラメタは、ApplicationProfileクラス、または、DispatchContextクラスのgetLogComposer()メソッドで参照するLogComposerオブジェクトに有効です。 キューイングの有効・無効は初期化パラメタ、および、ログ定義ファイルでも設定することができます。ただし、disableQueueメソッドで設定されている場合は、そちらが優先されます。初期化パラメタについては初期化パラメタを参照してください。ログ定義ファイルについては定義ファイルを用いたログ出力を参照してください。以下はWebアプリケーションでweb.xmlファイルにログのキュー利用を無効とする定義の例です。

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
      version="2.4">
  <context-param>
    <param-name>uji.log.enablecache</param-name>
    <param-value>false</param-value>
  </context-param>
</web-app>

注意
ログのキューイングを有効にした場合、LogComposerインスタンスごとにキューが生成されます。これに伴って、次の2点に注意してください。

■キューサイズの設定

キューのサイズ(メッセージを蓄積できる数)を設定しておくことによって、ログメッセージによってメモリが枯渇することを防ぎます。この上限を超えてメッセージを出力しようとした場合、出力の実行により空きができるまで待たされます。デフォルトのキューサイズは1000です。

        lc.setQueueSize(1000);

■カスタマイズしたログ機構でのキュー設定

カスタマイズしたログ機構を使用する場合、ログ機構を取得した直後はキューが抑制されています。キューの開始を実行する必要があります。

public class SampleApplication extends com.fujitsu.uji.ApplicationProfile
{
    LogComposer newLogComposer() {
        LogComposer lc;
        lc = LogComposer.getFileOutputInstance("c:\\myapp\\mylog.txt", true,
                      new LineLogFormat("%d %m"));
        lc.setQueueSize(1000);
        lc.enableQueue();
        lc.setLogLevel(9);
        return lc;
    }
}


目次 前ページ次ページ

Copyright 2000-2008 FUJITSU LIMITED