8.11.3 ユーザログ出力処理の流れ
EJBクライアントアプリケーションでのユーザログの出力は,次の流れで行われます。
-
システムプロパティの設定
設定ファイルを利用してシステムプロパティが設定されます。
-
EJBクライアントの初期化
EJBクライアント機能を初期化するメソッドが呼び出されて,ログ体系が構築されます。
-
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クライアント機能は,次のどれかのタイミングで初期化されます。
-
JNDIの初期コンテキスト生成(new InitialContextメソッド)
-
セキュリティ機能APIでのログイン(LoginInfoManagerクラスのloginメソッド)
-
通信タイムアウト機能APIでの通信タイムアウト設定用オブジェクトの取得(RequestTimeoutConfigFactoryクラスのgetRequestTimeoutConfigメソッド)
- 注意事項
-
初期化処理が失敗した場合,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メソッドは使用しないでください。
-