Cosminexus 機能解説

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

18.3.10 EJBクライアントアプリケーションでのユーザログ出力の実装

ユーザログ機能は,EJBクライアントアプリケーションでも使用できます。ユーザログ機能を実装すると,EJBクライアントアプリケーションのユーザログを出力できるようになります。

ここでは,EJBクライアントアプリケーションでユーザログ機能を利用するための準備と,ユーザログが出力されるまでの処理の流れについて説明します。

<この項の構成>
(1) 利用の準備
(2) ユーザログ出力処理の流れ
(3) EJBクライアントアプリケーションでのユーザログ出力の拡張

(1) 利用の準備

EJBクライアントアプリケーションでユーザログ機能を利用する場合には,次の準備が必要です。

なお,EJBクライアントアプリケーションでユーザログ機能を利用する前提として,Application Server側での設定が必要になります。ユーザログの具体的な設定内容については,マニュアル「Cosminexus システム構築ガイド」のアプリケーションのユーザログ出力の設定に関する説明を参照してください。

(2) ユーザログ出力処理の流れ

EJBクライアントアプリケーションでのユーザログの出力は,次の流れで行われます。

  1. システムプロパティの設定
    設定ファイルを利用してシステムプロパティが設定されます。
  2. EJBクライアントの初期化
    EJBクライアント機能を初期化するメソッドが呼び出されて,ログ体系が構築されます。
  3. JavaロギングAPIの実行
    JavaロギングAPIの実行によって,ユーザログが出力されます。

流れに沿って,それぞれの処理内容について説明します。

(a) システムプロパティの設定

EJBクライアントアプリケーションのユーザログ機能用のシステムプロパティは,設定ファイルを利用して設定されます。

システムプロパティで設定できるプロパティは,J2EEサーバ用のusrconf.propertiesに指定できるプロパティのうち,「ejbserver.application.userlog」で始まるキーです。設定例を次に示します。

# user-log handler function
ejbserver.application.userlog.CJLogHandler.conf1.appname=my_app1
ejbserver.application.userlog.CJLogHandler.conf1.path=application1/logfileA
ejbserver.application.userlog.CJLogHandler.conf1.limit=10485760
ejbserver.application.userlog.CJLogHandler.conf1.count=2
ejbserver.application.userlog.CJLogHandler.conf1.level=SEVERE
 
# user-log logger function
ejbserver.application.userlog.Logger.com.example.userlogger1.handlers=com.hitachi.software.ejb.application.userlog.CJMPMessageFileHandler;conf1
ejbserver.application.userlog.Logger.com.example.userlogger1.useParentHandlers=true
ejbserver.application.userlog.Logger.com.example.userlogger1.level=INFO
ejbserver.application.userlog.loggers=com.example.userlogger1

EJBクライアントアプリケーションでは,ユーザログを出力するためのハンドラとして,CJMPMessageFileHandlerまたはCJMessageFileHandlerを指定できます。使用するハンドラは,ejbserver.application.userlog.Logger.<ロガー名>.handlersキーに指定します。例の場合は,userlogger1というロガーに,CJMPMessageFileHandlerクラスを指定しています。

CJMPMessageFileHandlerは,複数のプロセスから同時に同じファイルにログ出力できる機能を持つハンドラです。このため,EJBクライアントアプリケーションの複数のプロセスが出力するユーザログをまとめて出力できます。このハンドラは,EJBクライアントアプリケーションの場合だけ使用できるハンドラです。

なお,複数のプロセスから同時に同じファイルにログ出力しない場合は,J2EEアプリケーションのユーザログを出力する場合と同様に,CJMessageFileHandlerも使用できます。CJMessageFileHandlerを使用すると,CJMPMessageFileHandlerを使用する場合に比べて,ログ出力性能が高くなります。

注意
CJMPMessageFileHandlerクラスを使用すると,日立トレース共通ライブラリがログ管理に使用するファイルを「<ユーザログ出力ディレクトリ>/mmap/<ログファイル名のプレフィックス>.mm」に作成します。このユーザログ出力ディレクトリを使用している間は,このファイルを変更または削除しないでください。
(b) EJBクライアント機能の初期化

EJBクライアント機能を初期化するメソッドが呼び出されて,ログ体系が構築されます。EJBクライアント機能は,次のどれかのタイミングで初期化されます。

(c) JavaロギングAPIの実行

アプリケーション内の処理で,JavaロギングAPIが実行されて,ユーザログが出力されます。CJMPMessageFileHandlerを使用するときは,次の点に注意してください。

CJMPMessageFileHandler使用時の注意
CJMPMessageFileHandlerを使用する場合,メモリマップトファイルを使用しているため,実際にファイルへ反映されるまで遅延が発生することがあります。プロセスが終了するときにはファイルに反映されますが,長時間動作し続ける場合やファイルへの反映が遅延すると問題がある場合などは,flushを実行することをお勧めします。
flushを実行する方法には,次の二つの方法があります。
  • Logger.getHandlersメソッドが返すすべてのHandlerに対して,flushメソッドを呼び出す。
  • ejbserver.application.userlog.CJLogHandler.<ハンドラ名>.autoFlush.enabledプロパティを指定する。
ejbserver.application.userlog.CJLogHandler.<ハンドラ名>.autoFlush.enabledプロパティを指定する場合,flushは自動的に実行されます。このため,flushメソッドは使用しないでください。

(3) EJBクライアントアプリケーションでのユーザログ出力の拡張

ユーザが作成した独自のクラス(Formatter,Filter,Handler)をEJBクライアントアプリケーションのユーザログ機能で利用するには,ユーザが作成した独自のクラスをEJBクライアントアプリケーションのJavaVMを開始するときのクラスパスに指定します。