ヘッダーをスキップ
Oracle Containers for J2EE開発者ガイド
10g(10.1.3.1.0)
B31851-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

4 ロギング実装のガイドライン

この章では、OC4Jにデプロイされるアプリケーションへのロギング機能の実装に関するOracleのガイドラインについて説明します。これにより、次のトピックで説明するように、Javaの標準のロギング・フレームワークを使用するアプリケーションで、JavaロギングをOracle Diagnostic Logging(ODL)と統合し、オラクル社が提供するログ分析ツールを利用することが可能になります。

OC4Jでのロギングの構成と使用方法については、『Oracle Containers for J2EE構成および管理ガイド』を参照してください。

JavaとOracleのロギング・フレームワークの概要

ここでは、JavaとOracleのロギング・フレームワークの概要、および両者を統合してJavaのログ出力をOracle形式で生成できるようにする方法について説明します。

Javaロギング・フレームワーク

JDK 1.4で導入されたJavaロギング・フレームワークは、java.util.loggingパッケージを通して広範なロギングAPIを提供します。java.util.loggingパッケージの概要については、http://java.sun.com/j2se/1.4.2/docs/api/overview-summary.htmlを参照してください。

Javaロギング・フレームワークの概要については、Sun社のサイトでhttp://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.htmlを参照してください。

Oracle Diagnostic Loggingフレームワーク

Oracle Diagnostic Loggingフレームワーク(ODL)は、Javaの標準フレームワークを補完してログ・データをOracleログ分析ツールに自動的に統合するプラグイン・コンポーネントを提供します。ODLフレームワークではログ・ファイルはXML形式で作成されるため、Oracle Application Serverや独自に開発したコンポーネントで、より簡単に解析および再利用することができます。

ODLフレームワークでは、ログ・ファイルのローテーションなどのログ・ファイル管理機能がサポートされています。ログ・ファイルの最大サイズとログ・ディレクトリの最大サイズも定義できます。

ODL形式のログ・ファイルは、WebベースのOracle Enterprise Manager 10g Application Server Controlコンソールで表示できるため、管理者は、集中管理を行っている場所から、OC4J内で稼働しているすべてのコンポーネントとアプリケーションで生成されたログ出力を集約して表示できます。OC4Jインスタンスで生成されたログ・ファイルを表示する方法については、『Oracle Containers for J2EE構成および管理ガイド』を参照してください。

JavaのロギングとOracle Diagnostic Loggingの連携

Javaロギング・フレームワークでは、アプリケーションはjava.util.logging.LoggerクラスのインスタンスであるLoggerオブジェクトを呼び出して、イベントを記録します。Loggerは、システムまたはアプリケーションのコンポーネントと関連付けられた名前付きエンティティです。各Loggerには特定のログ・レベルが割り当てられ、重大度がそのレベル以上のイベントのみを記録します。

ロギング・メッセージはHandlerオブジェクトに転送され、そこからさらに様々な宛先に転送されて公開されます。oracle.core.ojdl.loggingパッケージには、Loggerの出力をXMLベースのODL形式で生成するHandlerクラスであるODLHandlerが含まれます。

Javaロギングのガイドライン

次の項目では、Oracle Diagnostic Loggingフレームワークを統合するJava Loggerを実装するためのガイドラインについて説明します。

Java Loggerの名前の指定

Java Loggerは名前付きエンティティであり、階層的なドット区切りのネームスペースを使用して名前が付けられます。Loggerのネームスペースはグローバルであり、OC4J内で稼働するすべてのアプリケーションで共有されます。そのため、名前の競合が発生しないよう、個々のLogger名を一意にする必要があります。

Loggerの名前には、ベンダー名とコンポーネント名を含む必要があり、オプションとしてモジュールまたはサブモジュールを含むことができます。Loggerの名前には、次の命名規則を使用してください。

vendorName.componentName[.moduleName][.subModuleName]

次に例を示します。

acme.mycomponent.mymodule

ログ・レベルの設定

Javaロギング・フレームワークでは、ログ・レベルはjava.util.logging.Levelクラスのオブジェクトで表されます。このクラスでは、SEVERE(最も優先度が高く、最も大きい値)からFINEST(最も優先度が低く、最も小さい値)までの7つの標準ログ・レベルが定義されています。

アプリケーションでは、可能なかぎりこれらの定義済Javaログ・レベルを利用する必要があります。これらのレベルには、Oracle Diagnostic Logging(ODL)メッセージ・タイプおよびレベルに対するOC4Jマップの一部として、Oracle診断ツールが提供されています。

表4-1では、事前定義済のJavaログ・レベルとODLのメッセージ・タイプおよびレベルの間のマッピングを示します。ODLのログ・レベルは132で、値が小さいほど重大度が高く情報量が少なくなります。

表4-1 Javaのログ・レベルとODLのメッセージ・タイプおよびログ・レベルのマッピング

Javaのログ・レベル ODLのメッセージ・タイプ:ログ・レベル ODLの説明
SEVERE.intValue()+100
INTERNAL_ERROR:1

プログラムで内部的な例外または予期しないリカバリ不可能な例外に対するエラーが発生しました。

SEVERE
ERROR:1

システム管理者の介入を必要とする問題が発生しました。

WARNING
WARNING:1

確認し、場合によってはエラーが発生する前に対処する必要のある、アクションまたは状況が検出されました。

INFO
NOTIFICATION:1

通常のアクションまたはイベントのレポートです。ログイン完了などのユーザー操作や、ログ・ファイルのローテーションなどの自動的な操作です。

CONFIG
NOTIFICATION:16

構成に関するメッセージまたは問題です。

FINE
TRACE:1

デバッグまたはパフォーマンスの監視に使用されるトレース・メッセージまたはデバッグ・メッセージです。通常は、詳細なイベント・データが含まれます。

FINER
TRACE:16

かなり詳細なトレース・メッセージまたはデバッグ・メッセージです。

FINEST
TRACE:32

非常に詳細なトレース・メッセージまたはデバッグ・メッセージです。


Oracle診断ツールは、アプリケーションで実装されるカスタム・ログ・レベルに対応するために、ある程度の柔軟性を備えています。ただし、デフォルトの7つのJavaレベル(SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST)にログ・レベルを含めることをお薦めします。

ローカライゼーション・サポートの追加

Loggerオブジェクトには、オプションとして、ローカライズされたログ・メッセージ文字列に使用するResourceBundleオブジェクトを関連付けることができます。

LoggerResourceBundleが関連付けられていない場合には、従来のクラス・ローダー階層に従い、再帰的にツリーの上方にある親からResourceBundle名を継承します。

ODLフレームワークを使用するためのJava Loggerの構成

Java LoggerでODL形式のログ・メッセージを出力するには、各LoggerをODLHandlerにマップします。このマッピングは、ロギング構成ファイルj2ee-logging.xmlを通して管理されます。このファイルは、OC4JによってORACLE_HOME/j2ee/instance/configディレクトリに生成されます。

OC4J 10g(10.1.3.1.0)では、Application Server Controlコンソールを使用して、次のようにログ出力のためのログ・レベルを設定できます。

  1. OC4Jのホームページで「管理」をクリックします。

  2. 「ログ出力の構成」ページを表示するには、管理タスクから「ログ出力の構成」を選択します。

  3. OC4Jインスタンス用にロードしたログ出力のリスト全体を表示するには、「すべてを開く」をクリックします。

  4. このページに表示されるログ出力について、ログ・レベルを選択します。

j2ee-logging.xml構成ファイルを手動で編集することもできます。このファイルを変更した後は、OC4Jを再起動します。

この構成ファイルには、<logging-configuration>ルート要素の下に2つの要素が含まれています。

次に示す例は、j2ee-logging.xmlでの、ODLHandlerの定義と、デフォルトのoracle Loggerおよびカスタムのacme.scheduler LoggerのODLHandlerに対するマッピングです。

<logging_configuration>
  <log_handlers>
    <log_handler name='oc4j-handler'
        class='oracle.core.ojdl.logging.ODLHandlerFactory'>
      <property name='path' value='%ORACLE_HOME%/j2ee/log/oc4j'/>
      <property name='maxFileSize' value='10485760'/>
      <property name='maxLogSize' value='104857600'/>
    </log_handler>
  </log_handlers>
  <loggers>
    <logger name='oracle' level='NOTIFICATION:1' useParentHandlers='false'>
      <handler name='oc4j-handler'/>
    </logger>
    <logger name='acme.scheduler' level='TRACE:1' useParentHandlers='false'>
      <handler name='oc4j-handler'/>
    </logger>
  </loggers>
</logging_configuration>