Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 拡張編


8.11.3 ユーザログ出力処理の流れ

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

  1. システムプロパティの設定

    設定ファイルを利用してシステムプロパティが設定されます。

  2. EJBクライアントの初期化

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

  3. JavaロギングAPIの実行

    JavaロギングAPIの実行によって,ユーザログが出力されます。

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

〈この項の構成〉

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

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」に作成します。このユーザログ出力ディレクトリを使用している間は,このファイルを変更または削除しないでください。

(2) EJBクライアント機能の初期化

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

注意事項

初期化処理が失敗した場合,EJBクライアントアプリケーションのユーザログを出力する機能は使用できません。ただし,ユーザアプリケーションのソースコード上で,J2SE標準のHandlerクラスやLoggerクラス,またはユーザが独自に作成したHandlerクラスやLoggerクラスの設定および構築をして,ログを出力することはできます。

(3) 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メソッドは使用しないでください。