MAP | PTLog ドキュメント > チュートリアル > PTLog Basic > ログフレームワークへの接続 | << | >> |
本節では、 基底(underlying)のログフレームワークの選択方法を説明します。
デモンストレーション実装のbasic.plug パッケージに属するクラス群も参照してください。
本チュートリアルでは、 クラスは全てクラス名のみで表記されています。 完全な名称は以下の通りです。
表記 | 完全名 |
---|---|
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);
}
この例では、
標準出力(stdout)を基底ログフレームワークの一種として指定するために、
WriterProvider.STDOUT
を使用しました。
基底ログフレームワーク指定のために、 PTLog は以下のバリエーションを提供しています。
NullLogServer
LogTap
コンストラクタにおいて使用されます。
WriterProvider
java.io.Writer
にログが書き出されることを意味します。
利便性上、このクラスは STDOUT
(標準出力)のみでなく
STDERR
(標準エラー出力)クラスフィールドも持っています。
LogAPIProvider
Log4jProvider
JCLProvider
これらを用いることで、 標準出力以外にもログフレームワークを指定することが可能です。 例えば:
public class Client
{
....
final static
public LogTap TAP =
new LogTap(Client.class, LogAPIProvider.INSTANCE);
// JDK Logging API を初期ログフレームワークとして使用
}
前述のように、
ログクライアントコードの LogTap
に対して、
任意の基底ログフレームワークを、
初期基底フレームワークとして指定することが出来ます。
しかし、基底フレームワークは通常は実行時に決定されるため、
LogTap
生成時に指定されるべきではありません。
一般に、ログ要求が一切書き出されない
NullLogServer
を用いて
LogTap
を生成すべきです。
public class Client
{
....
final static
public LogTap TAP = new LogTap(Client.class);
// 上記起動は、以下と等価
// new LogTap(Client.class, NullLogServer.INSTANCE)
}
その後は、
以下のようなコードにより基底ログフレームワークを指定可能です。
実行時にログフレームワークを確定するために、
この起動は
"main(String[])
"
(ないしは、これに類するメソッド、
例えば ServletContextListener
の
contextInitialized()
) において行われるでしょう。
Client.TAP.setServer(Log4jProvider.INSTANCE);
// Apache Log4j を基底フレームワークとして使用
別な見方をするなら、
LogTap#setServer(NullLogServer.INSTANCE)
起動により、
各 LogTap
による基底フレームワークへの要求発行を、
個別に抑止することが出来ます。
MAP | PTLog ドキュメント > チュートリアル > PTLog Basic > ログフレームワークへの接続 | << | >> |