8.2.2 ユーザログ出力の仕組み
ユーザログを出力するJ2EEアプリケーション,バッチアプリケーション,およびEJBクライアントアプリケーションの実装には,J2SEのJavaロギングAPIを使用できます。JavaロギングAPIは,メモリ,コンソール,ファイルなどのさまざまな出力ができる汎用性の高いAPIです。ただし,ロジックが単純なため,ミッション・クリティカルなシステムに適用する場合は,信頼性と耐久性を備えたログ出力用クラスをアプリケーション開発者が実装する必要があります。
ユーザログ機能を使用すると,アプリケーション開発者によってログ出力用クラスを実装しなくても,信頼性が高いユーザログを出力できます。
JavaロギングAPIを使用して開発したJ2EEアプリケーション,バッチアプリケーション,およびEJBクライアントアプリケーションから出力されたログは,トレース共通ライブラリを使用して,ほかのアプリケーションサーバシステムの構成ソフトウェアが出力する形式(トレース共通ライブラリ形式)で出力できます。このライブラリを使用することで,ユーザログをほかのシステムのログと同じ形式で扱うことができ,高い信頼性を持つ統一的なログ運用ができます。
ユーザログ出力は,J2SEのJavaロギングの仕組みに従って出力します。Javaロギングでは,ロガーとハンドラという2種類の要素を使用します。なお,ロガーおよびハンドラは,それぞれ,LoggerクラスおよびHandlerクラスのオブジェクトです。
Javaロギングの仕組みを次の図に示します。
図について説明します。
-
アプリケーションから,ロガーを使用して,ユーザログを出力します。
ユーザログは,アプリケーションの処理の中で,Loggerクラスのメソッドを使用して出力されます。
-
ロガーは,アプリケーションから出力されたログにレベルやメッセージ文字列などの付加情報を追加してLogRecordにしたものを,ハンドラに渡します。
なお,このとき,ロガーに接続されたフィルタ(Filterクラスのオブジェクト)を使用して,ログレベルとして指定する制御以上のきめ細やかな制御をすることもできます。
-
ハンドラは,受け取ったLogRecordを基に,ログをファイル,コンソールまたはソケットに出力します。
出力先や出力形式は,あらかじめハンドラのプロパティとして設定しておきます。ハンドラでは,ハンドラに接続されたフィルタを使用してきめ細やかな制御ができます。また,フォーマッタ(Formatterクラスのオブジェクト)を使用して任意の形式にフォーマットしたメッセージを出力できます。
アプリケーションサーバでは,トレース共通ライブラリ形式でログをファイルに出力するためのファイルハンドラを提供しています。提供しているファイルハンドラについて,アプリケーションの種類ごとに説明します。
-
J2EEアプリケーションまたはバッチアプリケーションの場合
ファイルハンドラとして,CJMessageFileHandlerを提供しています。CJMessageFileHandlerのログの出力先ファイル,ログレベル,ログ面数,使用するフィルタおよびフォーマッタなどは,システム構築時に設定できます。J2EEアプリケーションまたはバッチアプリケーションのユーザログ出力の設定については,「8.8 J2EEアプリケーションのユーザログ出力の設定」および「8.9 バッチアプリケーションのユーザログ出力の設定」を参照してください。
また,ユーザログに,ログを出力したアプリケーションの名称やメッセージの内容と対応したメッセージIDを出力したい場合は,J2EEアプリケーションまたはバッチアプリケーション内で実装する必要があります。この場合は,Application Serverが提供する拡張LogRecord作成用のクラス(CJLogRecordクラス)を使用して実装してください。CJLogRecordクラスの使用方法については,「8.4 ユーザログ出力で使用するメソッド」を参照してください。また,CJLogRecordクラスのAPIについては,マニュアル「アプリケーションサーバ リファレンス API編」の「7. ユーザログ機能で使用するAPI」を参照してください。
- 注意事項
-
ハンドラやロガーの設定をJ2EEアプリケーション内に直接実装する場合は,実行するアプリケーションにLoggingPermission("control")のセキュリティ権限が必要になります。LoggingPermission("control")のセキュリティ権限の設定方法については,「8.8.2 セキュリティポリシーの設定」を参照してください。
-
EJBクライアントアプリケーションの場合
ファイルハンドラとして,CJMPMessageFileHandlerを提供しています。なお,EJBクライアントアプリケーションの開始に使用するコマンドによって,EJBクライアントアプリケーションのユーザログの設定方法が異なります。EJBクライアントアプリケーションのユーザログ出力の設定については,「8.10 EJBクライアントアプリケーションのユーザログ出力の設定(cjclstartapコマンドを使用する場合)」または「8.11 EJBクライアントアプリケーションのユーザログ出力の実装と設定(vbjコマンドを使用する場合)」を参照してください。