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

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

本節では、 基底(underlying)のログフレームワークの選択方法を説明します。

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

概要

クラス名

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

PTLog のクラス

表記 完全名
JCLProvider jp.ne.dti.lares.foozy.ptlog.jcl.JCLProvider
Log4jProvider jp.ne.dti.lares.foozy.ptlog.log4j.Log4jProvider
LogAPIProvider jp.ne.dti.lares.foozy.ptlog.logapi.LogAPIProvider
LogTap jp.ne.dti.lares.foozy.ptlog.LogTap
NullLogServer jp.ne.dti.lares.foozy.ptlog.NullLogServer
WriterProvider jp.ne.dti.lares.foozy.ptlog.writer.WriterProvider

初期ログフレームワークの指定

前節では、 LogTap の生成コードを以下のように記述しました。


public class Client
{
    ....

    final static
    public LogTap TAP =
    new LogTap(Client.class, WriterProvider.STDOUT);
}

LogTap の生成

この例では、 標準出力(stdout)を基底ログフレームワークの一種として指定するために、 WriterProvider.STDOUT を使用しました。

基底ログフレームワーク指定のために、 PTLog は以下のバリエーションを提供しています。

NullLogServer
このクラスは、ログ記録が一切書き出されないことを意味します。 これは、「主体(subject)」パラメータのみを取る LogTap コンストラクタにおいて使用されます。
WriterProvider
このクラスは、指定した java.io.Writer にログが書き出されることを意味します。 利便性上、このクラスは STDOUT(標準出力)のみでなく STDERR(標準エラー出力)クラスフィールドも持っています。
LogAPIProvider
このクラスは、 JDK Logging API フレームワークを通してログが書き出されることを意味します。
Log4jProvider
このクラスは、 Apache Log4j フレームワークを通してログが書き出されることを意味します。
JCLProvider
このクラスは、 Jakarta Commons Logging フレームワークを通してログが書き出されることを意味します。

これらを用いることで、 標準出力以外にもログフレームワークを指定することが可能です。 例えば:


public class Client
{
    ....

    final static
    public LogTap TAP =
    new LogTap(Client.class, LogAPIProvider.INSTANCE);
    // JDK Logging API を初期ログフレームワークとして使用
}

JDK Logging API を使用する LogTap の生成

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

前述のように、 ログクライアントコードの LogTap に対して、 任意の基底ログフレームワークを、 初期基底フレームワークとして指定することが出来ます。

しかし、基底フレームワークは通常は実行時に決定されるため、 LogTap 生成時に指定されるべきではありません。 一般に、ログ要求が一切書き出されない NullLogServer を用いて LogTap を生成すべきです。


public class Client
{
    ....

    final static
    public LogTap TAP = new LogTap(Client.class);
    // 上記起動は、以下と等価
    //     new LogTap(Client.class, NullLogServer.INSTANCE)
}

NullLogServer を用いる LogTap の生成

その後は、 以下のようなコードにより基底ログフレームワークを指定可能です。 実行時にログフレームワークを確定するために、 この起動は "main(String[])" (ないしは、これに類するメソッド、 例えば ServletContextListenercontextInitialized()) において行われるでしょう。


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

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

別な見方をするなら、 LogTap#setServer(NullLogServer.INSTANCE) 起動により、 各 LogTap による基底フレームワークへの要求発行を、 個別に抑止することが出来ます。


次節「Tap を束ねる」へ