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

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

4.2.3 ログ拡張機能

ログ拡張機能を使用することで、不要なアプリケーションログの出力を制御するためのフィルタ機能や、Syslogサーバにログを送信するための機能を利用することが可能です。 ログ拡張機能を使用する場合は、[Apcoordinatorのインストールフォルダ]\lib\ujief.jarをクラスパスに設定してください。

ログフィルタ機能

特定の文字列を含むアプリケーションログのみを選択して出力することができます。文字列は正規表現パターンで指定します。
ログフィルタ機能を使用する場合は、com.fujitsu.uji.log.writer.FilterWriterクラスを使用します。
下記の例では、日付と時刻の後に"Warning"という文字列を含むものだけを出力します。

import com.fujitsu.uji.*;
import com.fujitsu.uji.log.*;
import com.fujitsu.uji.log.writer.FilterWriter;

public class SampleApplication extends com.fujitsu.uji.ApplicationProfile
{
    public LogComposer newLogComposer() {
        LogComposer lc;
        try {
            String pattern = "[0-9][0-9][0-9][0-9]/[0-1][0-9]/[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9] Warning.*$";
            FilterWriter writer = new FilterWriter(pattern);
            lc = new LogComposer(new PrintLogSink(writer, new LineLogFormat("%d %m")));
        } catch(IllegalArgumentException e) {
            return null; // デフォルトを使用
        }
        lc.setQueueSize(1000);
        lc.enableQueue();
        lc.setLogLevel(9);
        return lc;
    }
}

ポイント
ログの出力フォーマット設定を併用することで、処理対象のメソッド名や、時刻によってログの出力先を変更することが可能です。

Syslogサーバへの送信

アプリケーションログをSyslogサーバに送信することで、複数のサーバで出力されるログを一括管理することが可能です。
Syslogサーバへログを送信する場合はcom.fujitsu.uji.log.writer.SyslogWriterクラスを使用します。
SyslogWriterクラスでは、Syslogサーバのホスト名や、ログの機能(Facility値)、ログの重大度(Severity値)を設定することが可能です。
下記では、localhostのSyslogサーバに、Facility値を"ユーザ"(デフォルト)、重大度を"エラー"として送信しています。

import com.fujitsu.uji.*;
import com.fujitsu.uji.log.*;
import com.fujitsu.uji.log.writer.SyslogWriter;

public class SampleApplication extends com.fujitsu.uji.ApplicationProfile
{
    public LogComposer newLogComposer() {
        LogComposer lc;
        try {
            SyslogWriter writer = new SyslogWriter("localhost");
            writer.setSeverity(SyslogWriter.SEVERITY_ERR);
            lc = new LogComposer(new PrintLogSink(writer, new LineLogFormat("%d %m")));
        } catch(IllegalArgumentException e) {
            return null; // デフォルトを使用
        }
        lc.setQueueSize(1000);
        lc.enableQueue();
        lc.setLogLevel(9);
        return lc;
    }
}

注意
Syslogサーバの設定方法は、ご使用になるSyslogサーバのマニュアルを参照してください。

目次 前ページ次ページ

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