ヘッダーをスキップ
Oracle Containers for J2EE開発者ガイド
10g(10.1.3.5.0)
B56031-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で表示できるため、管理者は、集中管理を行っている場所から、Oracle Application Server内で稼働しているすべてのコンポーネントとアプリケーションで生成されたログ出力を集約して表示できます。OC4Jインスタンスで生成されたログ・ファイルの表示に関する情報は、『Oracle Containers for J2EE構成および管理ガイド』を参照してください。

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

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

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

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

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

Javaログ出力の名前の指定

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

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

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オブジェクトを関連付けることができます。

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

ODLフレームワークを使用するためのJavaログ出力の構成

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

Application Server Controlでログ出力のログ・レベルを設定する手順:

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

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

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

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

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

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

次に示す例は、j2ee-logging.xmlでの、ODLHandlerの定義と、デフォルトのoracleログ出力およびカスタムのacme.schedulerログ出力の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>

Oracle HTTPクライアント・ロギングの使用方法

oracle.http.client:10.1.3システム・ライブラリとしてインストールされるOracle HTTPClientは、設定時および通信時のアクティビティを記録します。HTTPClientバージョン10.1.3以上では、標準のJDKロギングAPI(java.util.logging)が使用されます。HTTPClientのルート・ログ出力は、HTTPClientです。

次のいずれかの機能を使用して、スタンドアロンOC4J、またはOC4JのインスタンスやグループのHTTPClientロギングを有効化、無効化および管理できます。

HTTPClientメッセージをOC4Jログにリダイレクトすることもできます。方法は、『Oracle Containers for J2EE構成および管理ガイド』の「LogViewerを使用したOC4Jログのアプリケーション・メッセージの表示」を参照してください。

ODLフレームワークでのHTTPClientロギングの有効化

ODLフレームワークを使用して、j2ee-logging.xml構成ファイルでHTTPClientロギングを有効化できます。このファイルの詳細は、「ODLフレームワークを使用するためのJavaログ出力の構成」を参照してください。

ODLフレームワークでHTTPClientロギングを有効化する手順:

  1. スタンドアロンOC4J、またはOC4Jのインスタンスやグループのj2ee-logging.xmlロギング構成ファイルを編集します。

  2. 次のように、HTTPClientログ出力を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='HTTPClient' level='TRACE:1' useParentHandlers='false'>
          <handler name='oc4j-handler'/>
        </logger>
      </loggers>
    </logging_configuration>
    
  3. j2ee-logging.xmlファイルを保存します。

  4. OC4Jを再起動します。

ODLフレームワークでHTTPClientロギングを無効化する手順:

  1. スタンドアロンOC4J、またはOC4Jのインスタンスやグループのj2ee-logging.xmlロギング構成ファイルを編集します。

  2. 次に示す、ODLHandlerへのHTTPClientログ出力のマッピングをファイルから削除します。

        <logger name='HTTPClient' level='TRACE:1' useParentHandlers='false'>
          <handler name='oc4j-handler'/>
        </logger>
    
  3. j2ee-logging.xmlファイルを保存します。

  4. OC4Jを再起動します。

システム・プロパティを使用したスタンドアロンOC4Jまたはクライアント・サイド・アプリケーションのHTTPClientロギングの有効化

HTTPClient.log.levelを次のいずれかの標準トレース・ログ・レベルに設定することで、スタンドアロンOC4Jまたはクライアント・サイド・アプリケーションのHTTPClientロギングを有効化できます。


CONFIG
FINE
FINER
FINEST
ALL

これらのログ・レベルの詳細およびODLのメッセージ・タイプとログ・レベルへのマップ方法は、「ログ・レベルの設定」を参照してください。

Application Server Controlでのログ・レベルの設定方法は、「ODLフレームワークを使用するためのJavaログ出力の構成」を参照してください。

HTTPClient.log.levelOFFに設定すると、HTTPClientロギングを無効化できます。

システム・プロパティを使用したOracle Application ServerでのOC4JのインスタンスまたはグループのHTTPClientロギングの有効化

Oracle Application ServerでのOC4JのインスタンスまたはグループのHTTPClientロギングは、Oracle Process Manager and Notification Server(OPMN)の構成ファイルopmn.xmlを任意で設定できる点を除いて、スタンドアロンOC4Jの場合と同じです。また、HTTPClientロギングはシステム出力に送られ、Oracle Application Serverログのいずれかに書き込まれます。

システム・プロパティを使用してOracle Application ServerでOC4JのインスタンスまたはグループのHTTPClientロギングを有効化する手順:

  1. ORACLE_HOME/opmn/conf/opmn.xmlファイルを開きます。

  2. HTTPClientロギングを有効化するOC4Jのインスタンスまたはグループとid属性の値が一致する<process-type>要素を探します。次に例を示します。

    <process-type id="OC4J_Portal" module-id="OC4J">
      <environment>
        <variable id="DISPLAY" value="localhost:0"/>
        <variable id="LD_LIBRARY_PATH" value="/private1/iasinst/OraHome_4/lib32:
          /private1/iasinst/OraHome_4/lib:/private1/iasinst/OraHome_4/network/lib:
          /private1/iasinst/OraHome_4/jdk/jre/lib/sparc"/>
      </environment>
      <module-data>
        <category id="start-parameters">
          <data id="java-options" value="-server
            -Djava.security.policy=/private1/iasinst/OraHome_4/j2ee/OC4J_Portal/config/java2.policy
            -Djava.awt.headless=true -Xmx256m "/>
    
  3. <category>要素start-parametersの下にあるid属性の値がjava-optionsである<data>要素のvalue属性でシステム・プロパティを設定して、HTTPClientロギングを有効化します。たとえば、次のようになります。

        <category id="start-parameters">
          <data id="java-options" value="-server
            -Djava.security.policy=/private1/iasinst/OraHome_4/j2ee/OC4J_Portal/config/java2.policy
            -Djava.awt.headless=true -Xmx256m
            -DHTTPClient.log.level=FINE /> 
    
  4. OC4Jのインスタンスまたはグループを起動します。

  5. Oracle Application Serverによって標準出力に書き込まれるHTTPClientログを確認します。

    このログは、ORACLE_HOME/opmn/logs/instance_default_1にある可能性があります。

システム・プロパティを使用してOracle Application ServerでOC4JのインスタンスまたはグループのHTTPClientロギングを無効化する手順:

  1. ORACLE_HOME/opmn/conf/opmn.xmlファイルを開きます。

  2. HTTPClientロギングを無効化するOC4Jのインスタンスまたはグループとid属性の値が一致する<process-type>要素を探します。次に例を示します。

  3. <category>要素start-parametersの下にあるid属性の値がjava-optionsである<data>要素のvalue属性で、HTTPClient.log.levelシステム・プロパティをOFFに設定します。たとえば、次のようになります。

        <category id="start-parameters">
          <data id="java-options" value="-server
            -Djava.security.policy=/private1/iasinst/OraHome_4/j2ee/OC4J_Portal/config/java2.policy
            -Djava.awt.headless=true -Xmx256m
            -DHTTPClient.log.level=OFF> 
    
  4. OC4Jのインスタンスまたはグループを起動します。