8.6.3 ロガーおよびハンドラを作成・設定する場合の指針
ロガーおよびハンドラを作成,設定する場合の指針を次に示します。
-
一つのロガーに対して複数のファイルハンドラを接続できますが,複数のロガーから出力先が同じファイルハンドラに接続して利用することはできません。
-
アプリケーションごとにログの出力先を変えたい場合は,アプリケーションごとのロガーを作成します。
-
ロガーは,階層関係を持たせることができます。階層関係を持たせた場合,下位のロガーが取得したログメッセージは,上位のロガーに伝播します。必要に応じて,ロガーの伝播を止めてください。特に,ロガーの最上位にはルートロガーがデフォルトで存在し,J2SEデフォルトの設定の場合,ルートロガーにはConsoleHandlerが接続されています。上位ロガーへの伝播を止めていない場合,ルートロガーのConsoleHandlerからコンソールにすべてのメッセージが出力されます。
-
ハンドラはインスタンスごとにメッセージを出力するため,一つの出力メッセージが複数のハンドラに送信された場合,一つの出力メッセージが複数回出力されます。例えば,2か所のConsoleHandlerのメッセージは,コンソールに2回出力されます。
-
一つのアプリケーションで複数のログファイルを利用する場合は,出力先ごとにハンドラを作成してください。
ロガーとハンドラの作成例を次の図に示します。
この例では,J2EEアプリケーション1と2に対して,com.example.userlogger1とcom.example.userlogger2という2種類のロガーを作成しています。com.example.userlogger1からは,ログの出力レベルおよび出力内容に応じて2種類のログファイルを出力するために,conf1とconf2という2種類のCJMessageFileHandlerハンドラを作成しています。このような構成にすると,ログファイル1にはSEVEREレベル以上の重要なユーザログを,ログファイル2にはINFOレベル以上のすべてのユーザログを出力するという運用ができます。一方,com.example.userlogger2からは1種類のログファイルだけを出力します。この場合は,J2EEアプリケーションから指定されたログのうち,com.example.userlogger2のロガーとハンドラconf3に指定したレベル以下のユーザログは,すべてログファイル3に出力されます。なお,コンソールにログを出力したい場合は,J2SEの標準のハンドラであるConsoleHandlerを使用してください。
それぞれのログファイルのサイズおよび面数は,アプリケーションが出力するユーザログの量や指定した出力レベルに応じて,適切に設定してください。