Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

18.3.1 ユーザログ出力の概要

ここでは,ユーザログ出力の概要について説明します。

<この項の構成>
(1) ユーザログ出力とは
(2) ユーザログ出力の仕組み

(1) ユーザログ出力とは

J2EEアプリケーション,バッチアプリケーション,およびEJBクライアントアプリケーションが出力するログを,ユーザログといいます。Cosminexusでは,ユーザログを,日立トレース共通ライブラリ形式で出力できます(ユーザログ機能)。これによって,システムのログとアプリケーションのログを同じ形式で扱うことができるようになり,システム全体のログ運用の信頼性を高められます。

次に,ユーザログ機能を使用したログ出力の流れを示します。

図18-4 ユーザログ機能の処理の流れ

[図データ]

ユーザログ出力の実装にはJ2SEの標準のログ出力機能(JavaロギングAPI)を使用します。この機能を使用する場合は,ユーザログ出力をJavaロギングAPIで実装してください。

参考
リソースアダプタからユーザログを出力することはできません。なお,リソースアダプタから呼び出されるMessage-driven Beanからは,ユーザログを出力できます。

(2) ユーザログ出力の仕組み

ユーザログを出力するJ2EEアプリケーション,バッチアプリケーション,およびEJBクライアントアプリケーションの実装には,J2SEのJavaロギングAPIを使用できます。JavaロギングAPIは,メモリ,コンソール,ファイルなどのさまざまな出力ができる汎用性の高いAPIです。ただし,ロジックが単純なため,ミッション・クリティカルなシステムに適用する場合は,信頼性と耐久性を備えたログ出力用クラスをアプリケーション開発者が実装する必要があります。

ユーザログ機能を使用すると,アプリケーション開発者によってログ出力用クラスを実装しなくても,信頼性が高いユーザログを出力できます。

JavaロギングAPIを使用して開発したJ2EEアプリケーション,バッチアプリケーション,およびEJBクライアントアプリケーションから出力されたログは,日立トレース共通ライブラリを使用して,ほかのCosminexusシステムの構成ソフトウェアが出力する形式(日立トレース共通ライブラリ形式)で出力することができます。このライブラリを使用することで,ユーザログをほかのシステムのログと同じ形式で扱うことができ,高い信頼性を持つ統一的なログ運用ができます。

ユーザログ出力は,J2SEのJavaロギングの仕組みに従って出力します。Javaロギングでは,ロガーハンドラという2種類の要素を使用します。なお,ロガーおよびハンドラは,それぞれ,LoggerクラスおよびHandlerクラスのオブジェクトです。

Javaロギングの仕組みを次の図に示します。

図18-5 Javaロギングの仕組み

[図データ]

図について説明します。

  1. アプリケーションから,ロガーを使用して,ユーザログを出力します。
    ユーザログは,アプリケーションの処理の中で,Loggerクラスのメソッドを使用して出力されます。
  2. ロガーは,アプリケーションから出力されたログにレベルやメッセージ文字列などの付加情報を追加してLogRecordにしたものを,ハンドラに渡します。
    なお,このとき,ロガーに接続されたフィルタ(Filterクラスのオブジェクト)を使用して,ログレベルとして指定する制御以上のきめ細やかな制御をすることもできます。
  3. ハンドラは,受け取ったLogRecordを基に,ログをファイル,コンソールまたはソケットに出力します。
    出力先や出力形式は,あらかじめハンドラのプロパティとして設定しておきます。ハンドラでは,ハンドラに接続されたフィルタを使用してきめ細やかな制御ができます。また,フォーマッタ(Formatterクラスのオブジェクト)を使用して任意の形式にフォーマットしたメッセージを出力できます。

Cosminexusでは,日立トレース共通ライブラリ形式でログをファイルに出力するためのファイルハンドラを提供しています。提供しているファイルハンドラについて,アプリケーションの種類ごとに説明します。

●J2EEアプリケーションまたはバッチアプリケーションの場合

ファイルハンドラとして,CJMessageFileHandlerを提供しています。CJMessageFileHandlerのログの出力先ファイル,ログレベル,ログ面数,使用するフィルタおよびフォーマッタなどは,システム構築時に設定できます。J2EEアプリケーションまたはバッチアプリケーションのユーザログ出力の設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。

また,ユーザログに,ログを出力したアプリケーションの名称やメッセージの内容と対応したメッセージIDを出力したい場合は,J2EEアプリケーションまたはバッチアプリケーション内で実装する必要があります。この場合は,Application Serverが提供する拡張LogRecord作成用のクラス(CJLogRecordクラス)を使用して実装してください。CJLogRecordクラスの使用方法については,「18.3.3 ユーザログ出力で使用するメソッド」を参照してください。また,CJLogRecordクラスのAPIについては,マニュアル「Cosminexus リファレンス API編」を参照してください。

注意
ハンドラやロガーの設定をJ2EEアプリケーション内に直接実装する場合は,実行するアプリケーションにLoggingPermission("control")のセキュリティ権限が必要になります。LoggingPermission("control")のセキュリティ権限の設定方法については,「18.3.6 セキュリティポリシーの設定」を参照してください。
●EJBクライアントアプリケーションの場合

ファイルハンドラとして,CJMPMessageFileHandlerを提供しています。なお,EJBクライアントアプリケーションの開始に使用するコマンドによって,EJBクライアントアプリケーションのユーザログの設定方法が異なります。EJBクライアントアプリケーションのユーザログ出力については,「18.3.9 EJBクライアントアプリケーションのユーザログ出力」を参照してください。