9.12 ユーザログ機能を使用する場合の注意事項

ここでは,ユーザログ機能を使用する場合の注意事項について説明します。

<この節の構成>
(1) LogManagerのカスタマイズについて
(2) ユーザが作成したフィルタ・フォーマッタを使用する場合の注意
(3) ロガーとハンドラとの接続
(4) EJBクライアントアプリケーションのログの出力モードの設定
(5) usrconf.propertiesの接尾辞が「.level」で終わるキーについて

(1) LogManagerのカスタマイズについて

J2SE標準のLogManagerは,java.util.logging.config.classなどのプロパティを使用してカスタマイズできます。ただし,Application Serverが提供するユーザログ機能を使用する場合,カスタマイズはしないでください。ユーザログ機能で使用するプロパティを使用したログ体系の構築では,J2EEサーバの起動時に,ユーザログ機能がLogManagerを使用してプロパティからログ構成を取得します。このため,LogManagerをユーザがカスタマイズすると,ログ構成の構築に失敗するおそれがあります。

また,アプリケーションのソースコード上でLogManagerのreadConfiguration(InputStream ins)メソッドなどを実行して,ロガーの構成を初期化した場合も,ユーザログ機能が構築したログ構成が失われます。このため,このメソッドは実行しないでください。

ただし,カスタマイズしたLogManagerが,すでに構築されているログの構成(LogManagerの内容)を完全に引き継いで,さらに独自の処理を追加した構造になっている場合は,カスタマイズ後もユーザログ機能を使用できます。

(2) ユーザが作成したフィルタ・フォーマッタを使用する場合の注意

ログメッセージの出力時に,ハンドラに接続している,ユーザ作成のフィルタが例外をスローした場合,ハンドラのisLoggableメソッド※1は,true※2を返します。

ハンドラに接続している,ユーザ作成のフォーマッタが例外をスローした場合,ハンドラはフォーマッタで整形したメッセージを出力できません。ユーザが指定したメッセージは,フォーマッタで整形しないで出力されます。

ユーザ作成のフィルタ,フォーマッタがスローした例外の内容については,cjexception.logを参照してください。

注※1
isLoggableメソッドは,ログメッセージの取捨選択を判定するメソッドです。
注※2
trueは,メッセージを出力対象とすることを意味します。

(3) ロガーとハンドラとの接続

ロガーには複数のハンドラを接続できますが,複数のロガーに同一の設定を持つハンドラ(CJMessageFileHandlerまたはCJMPMessageFileHandler)を接続することはできません。

(4) EJBクライアントアプリケーションのログの出力モードの設定

EJBクライアントアプリケーションのログの出力方法には,2種類のモードがあります。プロセスごとにログ出力先のサブディレクトリを作成する動作モードのことをサブディレクトリ専有モード,複数のプロセスでログ出力先のサブディレクトリを共有する動作モードのことをサブディレクトリ共有モードといいます。

サブディレクトリ専有モードは06-50よりも前のバージョンとの互換用に使用するモードであるため,EJBクライアントアプリケーションを新たに作成する場合は,サブディレクトリ共有モードの使用をお勧めします。

EJBクライアントアプリケーションのユーザログ機能を使用する場合,またはcjclstartapコマンドでEJBクライアントアプリケーションを実行する場合は,サブディレクトリ共有モードを使用してください。

EJBアプリケーションのログの出力方法については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(EJBコンテナ)」の「3.8 EJBクライアントアプリケーションのシステムログ出力」を参照してください。また,EJBアプリケーションのログを出力するサブディレクトリについては,マニュアル「アプリケーションサーバ 機能解説 運用/監視/連携編」の「7.6.1 アプリケーションのユーザログの取得」を参照してください。

(5) usrconf.propertiesの接尾辞が「.level」で終わるキーについて

J2EEサーバのusrconf.propertiesで,接尾辞が「.level」で終わるキーのうち,値の範囲にSEVERE,WARNING,INFO,CONFIG,FINE,およびFINEST以外を持つキーが設定された場合は,次の現象が発生します。

  1. サーバ起動時,java.util.logging.LogManagerクラスがキーを読み込むときに接尾辞が「.level」で終わるキーの値をチェックします。値が範囲以外の場合は,java.util.logging.LogManagerクラスが標準エラー出力へエラーメッセージを出力します。
    (例)sample.level=Error と指定されていた場合
    「Bad level value for property : sample.level」と出力されます。
  2. ユーザログ機能の接尾辞が「.level」で終わるキーでは値が適切でない場合,1.と同様にエラーメッセージを出力します。

ただし,どちらの場合もメッセージが表示されるだけで,動作上は影響ありません。