Home of: [工房 "藤車"] > [SourceForge.net における PTLog]

Tap を束ねる

本節では、 LogTap を束ねることで設定の利便性を向上させる方法を説明します。

デモンストレーション実装のbasic.bundle パッケージに属するクラス群も参照してください。

概要

クラス名

本チュートリアルでは、 クラスは全てクラス名のみで表記されています。 完全な名称は以下の通りです。

PTLog のクラス

表記 完全名
JCLProvider jp.ne.dti.lares.foozy.ptlog.jcl.JCLProvider
Log4jProvider jp.ne.dti.lares.foozy.ptlog.log4j.Log4jProvider
LogDirector jp.ne.dti.lares.foozy.ptlog.LogDirector
LogTap jp.ne.dti.lares.foozy.ptlog.LogTap

LogDirector の生成

前節においては, 以下に示すコードにより、 基礎となるログフレームワークの設定を行いました。


    Client.TAP.setServer(Log4jProvider.INSTANCE);
    // 基礎フレームワークとして Apache Log4j を使用

ログフレームワークへの接続

多くのクラスが LogTap を保持するような状況では、 如何に基礎フレームワークの選択処理が複雑になるか、 想像してみてください。 それらを一括して設定したいと思いますよね?

PTLog は LogTap 群を束ねるために、 LogDirector を提供しています。 LogDirector は、 LogTap 群と基礎フレームワークの間における中間点として機能します。

はじめに、 以下に示すような実装で、 LogTap 群を束ねるための LogDirector インスタンスを生成してください。


public class LogConfig
{
    ....

    final static
    public LogDirector DIRECTOR = new LogDirector();
}

LogDirector の生成

次に、 ログ発行のクライアントとなるクラスにおいて、 以下のような実装で LogTap 群を生成してください。


public class Client1
{
    ....
    final static
    public LogTap TAP =
    new LogTap(Client1.class, LogConfig.DIRECTOR);
}

public class Client2
{
    ....
    final static
    public LogTap TAP =
    new LogTap(Client2.class, LogConfig.DIRECTOR);
}

    ....

LogTap 群の生成

この生成は、 各 LogTap 群が、 LogDirector インスタンスである LogConfig#DIRECTOR を、 ログの初期出力先として使用する、ということを意味しています。

ログフレームワークへの接続

以上で、 LogConfig#DIRECTOR への #setServer() 起動によって、 全ての LogTap に対するログフレームワークの選択を一括して実施することが出来るようになりました


    LogConfig.DIRECTOR.setServer(JCLProvider.INSTANCE);
    // フレームワークとして Jakarata Commons Logging を使用

ログフレームワークへの接続

LogDirector は、 他の LogDirector の初期出力先として振舞うことも出来ますので、 幾つかの LogDirector を他の LogDirector により束ねることも出来ます。

これで、個々の LogTap と、 LogDirector により束ねられた全ての LogTap の、それぞれを設定できるようになりました。


次節「値のフォーマット」へ