この章では、OC4Jで使用できるシステムおよびアプリケーションのロギング機能の使用方法について説明します。この章の内容は次のとおりです。
各OC4Jプロセスでは、トラブルシューティングを支援するために多くのログ・ファイルが生成されます。1つのOC4Jインスタンスに対して複数のプロセスが稼働している場合、複数セットのログ・ファイルが生成されます。
OC4Jでは、次に示す2種類のログ・ファイルが生成されます。
プレーン・テキストのログ・ファイル
プレーン・テキストのログは、OC4Jコンポーネントに使用されるデフォルトのログ・ファイルで、開発環境での使用に最適です。これらのテキスト・ファイルに記録されたメッセージは、任意のエディタまたはOracle Enterprise Manager 10g Application Server Controlで読み取ることができます。
Oracle Diagnostic Logging(ODL)のログ・ファイル
これらのファイルに記録されたメッセージは、Application Server Controlを使用して表示できるXML形式を使用します。ODLではログ・ファイルの循環がサポートされています。
ログ・ファイルは、データの記録対象となるコンポーネントまたはアプリケーションに応じて異なる場所に生成されます。各コンポーネントまたはアプリケーションのロギング構成は、コンポーネント固有のXML構成ファイルに定義されます。
表11-1に、生成される各種ログ・ファイルの名前および場所とともに、各コンポーネントのロギング構成が含まれるXML構成ファイルを示します。特に明記されていないかぎり、示されるパスはすべて、スタンドアロンOC4Jの場合はORACLE_HOME
/j2ee/home
内、OPMN管理のOC4Jインスタンスの場合はORACLE_HOME
/j2ee/
instance
内です。
表11-1 OC4Jで生成されるログ・ファイルのリスト
コンポーネント | 構成ファイル | デフォルトのログ・ファイル名および場所 |
---|---|---|
Javaロギングを使用するOC4Jコンポーネント |
このODL形式のログ・ファイルの構成方法は、「OC4Jロギングの構成」を参照してください。 |
スタンドアロンOC4J: /log/oc4j/log.xml OPMN管理OC4J:
/log/instance_default_group_1/
oc4j/log.xml
|
Application Server Control |
/application-deployments/ascontrol/ orion-application.xml |
スタンドアロンOC4J: /log/ascontrol-application.log OPMN管理OC4J:
/log/instance_default_group_1/
ascontrol-application.log
|
OC4Jにデプロイされたアプリケーション |
/application-deployments/app_name/
orion-application.xml
|
スタンドアロンOC4J:
/application-deployments/
app_name/application.log
OPMN管理OC4J: /application-deployments/ app_name/instance_default_group_1/ application.log |
グローバル( |
/config/application.xml |
スタンドアロンOC4J: /log/global-application.log OPMN管理OC4J:
/log/instance_default_group_1/
global-application.log
|
デフォルトWebサイトのアクセス・ロギング |
/config/default-web-site.xml |
スタンドアロンOC4J: /log/default-web-access.log OPMN管理OC4J:
/log/instance_default_group_1/
default-web-access.log
|
OC4Jサーバー |
/config/server.xml |
スタンドアロンOC4J: /log/server.log OPMN管理OC4J:
/log/instance_default_group_1/server.log
|
JMS |
/config/jms.xml |
スタンドアロンOC4J: /log/jms.log OPMN管理OC4J:
/log/instance_default_group_1/jms.log
|
RMI |
/config/rmi.xml |
スタンドアロンOC4J: /log/rmi.log OPMN管理OC4J:
/log/instance_default_group_1/rmi.log
|
OPMN |
|
|
oc4j.properties
ファイルを介してOC4Jインスタンスを構成し、デフォルトの宛先ではなく特定のデバッグ先にトレース・ファイルを生成できます。Oracle Application Serverでは、インスタンスが同じグループの場合でも、異なる2つのOC4Jインスタンスが同じ宛先にトレース出力を生成する構成はサポートされていません。各OC4Jインスタンスでは、それぞれのトレース・ファイルが管理されます。
プレーン・テキスト・ロギングは、OC4Jで使用されるデフォルトの形式です。
この方式は、XMLファイルに合せてメッセージを振り分けます。しかし、同じサイズの複数のログ・ファイルに書き込むのではなく、そのコンポーネントに対するすべてのメッセージを単一のログ・ファイルに書き込みます。次の各項では、テキスト・ロギングの使用方法について説明します。
テキスト・ロギングは、表11-1に示したXML構成ファイル(default-web-site.xml
ファイルを除く)の要素により、有効または無効になります。(Webサイトのアクセス・ロギングの構成方法は、「Webサイトのアクセス・ロギングの構成」を参照してください。)
ロギングは、各コンポーネントのXML構成ファイルの<log>
要素の<file>
サブ要素によって有効になります。この要素には、単一のpath
属性が含まれ、生成されるログ・ファイルの名前と、必要に応じて場所を指定します。
<log> <file path="application.log" /> </log>
コンポーネントのテキスト・ロギングを無効にするには、対応する構成ファイルの<file>
要素を削除するか、コメント・アウトします。この行を削除しないでODLを有効にすると、両方のロギング・オプションが有効になります。
たとえば、アプリケーションのテキスト・ロギングを無効にするには、そのアプリケーションのorion-application.xml
ファイルで次の<file>
要素をコメント・アウトします。
<log> !-- <file path="application.log" /> --> </log>
ODLとテキスト・ロギングの両方を同時に有効にできますが、ディスク領域を節約するには、これらのオプションのいずれかを無効にする必要があります。
テキスト・ロギングにはサイズ制限やログ循環機能がないため、ログ・ファイルの監視は重要です。チェックしないままにしておくと、ログ・ファイルのサイズは増大し続け、ディスク超過が発生する可能性があります。
これらのファイルを管理する唯一の方法は、OC4Jを停止し、ファイルを削除した後、OC4Jを再起動してログ・ファイルを新しく始めることです。
すべてのテキスト・ログ・ファイルは、表11-1に示した場所にデフォルトで生成されます。テキスト・ログ・ファイルは、log
拡張子によって識別できます。
OC4Jコンポーネントに対して生成されるテキスト・ログ・ファイルは、次のようにApplication Server Controlを使用して表示できます。
Application Server Controlのページの一番下にある「ログ」リンクをクリックします。
「OC4J」を開きます。
「<instanceName>」を開きます。デフォルトのインスタンス名はhome
です。
デプロイ済J2EEアプリケーションのテキスト・ログ・ファイルは、Application Server Controlを使用して表示することはできません。
Oracle Diagnostic Loggingフレームワーク(ODL)には、標準Javaフレームワークを補完して、ログ・データとOracleログ分析ツールを自動的に統合するプラグイン・コンポーネントが用意されています。
ODLフレームワークでは、ログ・ファイルはXML文書形式で作成され、他のOracle Application Serverやカスタム開発されたコンポーネント(Application Server Controlなど)によるログの分析および再利用を可能にします。ODLでは、テキストベースのロギングとは異なり、ログ・ファイルの循環がサポートされています。
ODLは、<odl>
要素を表11-1に示したXMLファイルの<log>
要素内に追加すると有効になります。
注意:
|
<odl>
要素には次の属性があります。すべて必須です。
path
: このコンポーネントのlog.xml
ファイルが生成されるディレクトリへのパス。
重要: 次の例に示すように、パスを |
max-file-size
: 個々のログ・ファイルに対して許容される最大サイズ(KB単位)。この制限に達すると、新しいログ・ファイルが生成されます。
max-directory-size
: ログ・ファイル・ディレクトリに対して許容される最大サイズ(KB単位)を設定します。この制限を超えると、最も古いログ・ファイルから消去されます。
たとえば、petstore
アプリケーションのorion-application.xml
ファイルの次のエントリは、このアプリケーションに対してlog.xml
ファイルを生成します。また、ログ・ファイルの最大値を1,000KB、ディレクトリの最大値を10,000KBに設定します。
<log> <odl path="../log/petstore/" max-file-size="1000" max-directory-size="10000" /> </log>
この構成を使用して、petstore
ログ・ファイルは、使用しているOC4Jインストールに応じて、次の場所に生成されます。
スタンドアロンOC4J:
ログ・ファイルは、ORACLE_HOME
/j2ee/home/application-deployments/log/petstore
に生成されます。
OPMN管理OC4J:
ファイルは、ORACLE_HOME
/j2ee/
instance
/application-deployments/log/
instance
_default_group_1/petstore
というOC4Jインスタンス固有のディレクトリに生成されます。
ODLフレームワークでは、ログ・ファイルの循環などログ・ファイルの管理をサポートしています。ログ・ファイルの最大サイズおよびログ・ディレクトリの最大サイズも定義できます。また、OLDを使用すると次のような利点があります。
保存する診断情報の合計容量を制限できます。
作成された順序に従って、古いセグメント・ファイルは削除され、新しいセグメント・ファイルは保存されます。
コンポーネントをアクティブなままにできるため、診断ログ・ファイルがクリーンアップされる際にも停止する必要がありません。
ODLログは、現行のログ・ファイルlog.xml
、および古いメッセージが含まれるゼロ以上のOLDアーカイブ(セグメント・ファイル)を含む一連のログ・ファイルです。ODLを有効にすると、新しいメッセージはそれぞれ、log.xml
の最後に追加されます。このログ・ファイルは循環ポイントに達すると名前が変更され、新しいlog.xml
ファイルが作成されます。
現行のログ・ファイルが循環ポイントに達するとセグメント・ファイルが作成されます。この循環ポイントは最大ODLセグメント・サイズとして、また、一部のOC4Jログでは循環時間および循環頻度として指定されています。log.xml
ファイルはlog
n
.xml
という名前に変更されます。ここでn
は1から始まる整数です。新しいlog.xml
ファイルは、コンポーネントにより新しい診断メッセージが生成されると作成されます。
最後のログ・ファイルがいっぱいになると、次の手順で処理されます。
ディレクトリの領域を空けるため、最も古いログ・ファイルが消去されます。
log.xml
ファイルが最新のlog
n
.xml
ファイルに書き込まれます。n
は、最新のログ・ファイルを1だけ増やした値です。
アプリケーションまたはコンポーネントのODLログのサイズを制限するには、ログ・ディレクトリの最大サイズを指定する構成オプションを使用します。ディレクトリ内の全ファイルの合計サイズが最大サイズに達すると、合計サイズを指定された制限内に保つために最も古いアーカイブが削除されます。
注意: 最新のセグメント・ファイルは削除されません。 |
たとえば、log9872
という名前のセグメント・ファイルで開始し、最大ディレクトリ・サイズに達したとき、ログ・ファイル・ディレクトリに次のファイルが存在するとします。
File Size log.xml 10002 log9872.xml 15000 log9873.xml 15000 log9874.xml 15000 log9875.xml 15000 log9876.xml 15000
この場合、log.xml
がいっぱいになるとlog9872.xml
が削除されて、log.xml
の内容が新しいファイルlog9877.xml
に移動されます。その後、新しい診断メッセージが新しいlog.xml
ファイルに書き込まれます。
たとえば、petstore
と言う名前のOC4Jアプリケーションに最大のODLセグメント・サイズおよび最大ディレクトリ・サイズを指定するには、ファイルORACLE_HOME
/j2ee/
instance_name
/application-deployments/petstore/orion-application.xml
に次のエントリを追加します。
<log> <odl path="../log/petstore/" max-file-size="1000" max-directory-size="10000" /> </log>
j2ee-logging.xml
ファイルに構成されているOC4Jコンポーネントの場合は、最大セグメント・サイズおよびディレクトリ・サイズに加えて、循環時間と循環頻度も指定できます。
時間ベースのログ循環では、<logging-configuration>ルート要素の<log-handlers>
要素の<log_handler>
サブ要素に次に示すプロパティを指定できます。
baseRotationTime
: 循環のベース時間(オプション)。ベース時間の書式は次のいずれかです。
hh:mm
。04:20など。この書式ではローカル・タイムゾーンを使用します。
yyyy-MM-dd
。2006-08-01など。この書式ではローカル・タイムゾーンを使用します。
yyyy-MM-ddThh:mm
。2006-08-01T04:20など。この書式ではローカル・タイムゾーンを使用します。
yyyy-MM-ddThh:mm:ss.sTZD
。TZDはタイムゾーン・インジケータです。TZDは、UTCを示すZ
または{+|-}hh:mm
です。たとえば、2006-03-01T04:20:00-08:00は米国太平洋標準時タイムゾーンの2006年3月1日4:20:00を表します。
baseRotationTime
を指定しない場合、デフォルト値はUTCの1970年1月1日00:00です。
rotationFrequency
: 分単位の循環頻度。その他に、hourly
、daily
、weekly
のいずれかの値を指定できます。
これらのプロパティは次のファイルに指定します。
ORACLE_HOME/j2ee/instance_name/config/j2ee-logging.xml
たとえば、毎日ローカル時間の午前4時、またはサイズが2000000バイトに達した時にログ・ファイルを循環すると指定するには、次のようにします。
<log_handler name="h1" class="oracle.core.ojdl.logging.ODLHandlerFactory"> <property name="path" value="log"/> <property name="baseRotationTime" value="04:00"/> <property name="rotationFrequency" value="daily"/> <property name="maxFileSize" value=" 2000000"/> </log_handler>
ODL形式のログ・ファイルは、Application Server Controlで「ログ」リンクをクリックすると表示でき、管理者は、一元管理された場所からOC4J内で稼働しているすべてのコンポーネントおよびアプリケーションによって生成されたロギング出力を集計および表示できます。
ODLログ・ファイルは、「ログ・ファイル」ページでは.xml
拡張子で識別されます。
Application Server Controlのページの一番下にある「ログ」リンクをクリックします。
「OC4J」を開きます。
「<instanceName>」を開きます。スタンドアロンOC4JとOASのいずれでも、デフォルト・インスタンス名はhome
です。
OC4Jログ・ファイルを表示するには、診断メッセージ・ログを開いた後、log.xml
を開きます。
特定のJ2EEアプリケーションのODLログを表示するには、次のようにします。
「アプリケーション<applicationName>」を開きます。
診断メッセージ・ログを開きます。このディレクトリ内に生成されたlog.xml
ファイルを開いて表示します。
OC4Jの各種コンポーネントでは、OC4Jログ・ファイルに書き込むJavaログ出力を利用します。OC4Jログ・ファイルは、Oracle Diagnostic Loggingフレームワークを使用してXML形式で生成され、Application Server Controlを使用して表示できます。
この項の内容は次のとおりです。
OC4Jには、OC4Jログ・ファイル(log.xml
)に書き込む多くのコンポーネント・ログ出力が用意されています。使用可能なコンポーネント・ログ出力は、Application Server Controlの「ログ出力の構成」ページで表示および構成できます。
Javaのログ・レベルは、個々のコンポーネント・ログ出力ごとに設定できます。NULL
に設定すると、ログ出力は、親に設定されたログ・レベルを継承します。
したがって、すべてのログ出力のデフォルト・レベルは、oracle
ログ出力から継承されるデフォルト値であるINFO
です。この値は、Javaログ・レベルNOTIFICATION
にマップされます。このデフォルト値の変更方法は、「oracleログ出力の構成」を参照してください。
「ログ出力の構成」ページからログ出力に設定されたログ・レベルは保存されず、OC4Jランタイムにのみ適用されます。OC4Jが再起動されると、ログ・レベルは親ログ出力から継承されるデフォルト設定に戻ります。
表11-2に、Application Server Controlを使用して設定できるログ・レベルと、各Javaログ・レベルのマップ先となるODL message type:log level
を示します。
表11-2 OC4Jコンポーネント・ログ出力のログ・レベル
Javaログ・レベル | ODLメッセージ・タイプ:ログ・レベル | ODLの説明 |
---|---|---|
NULL |
|
ログ出力は、親に設定されたログ・レベルを継承します。 |
SEVERE |
ERROR:1 |
システム管理者が注意する必要があるシステム・エラーを記録します。 |
WARNING |
WARNING:1 |
エラーが発生する前に確認して処理する必要があるとして検出されたアクションまたは条件を記録します。 |
INFO |
NOTIFICATION:1 |
標準のアクションまたはイベントを記録します。ユーザー操作(「ログイン完了」など)や自動操作(ログイン・ファイルの循環など)が該当します。 |
CONFIG |
NOTIFICATION:16 |
構成関連のメッセージまたは問題を記録します。 |
FINE |
TRACE:1 |
デバッグやパフォーマンスの監視に使用されるトレースまたはデバッグのメッセージを記録します。通常、詳細なイベント・データが含まれます。 |
FINER |
TRACE:16 |
非常に詳細なトレースまたはデバッグのメッセージを記録します。 |
FINEST |
TRACE:32 |
きわめて詳細なトレースまたはデバッグのメッセージを記録します。 |
Application Server Controlを使用してOC4Jコンポーネント・ログ出力を構成する手順:
「管理」リンクをクリックします。
「ログ出力の構成」をクリックします。
ログ・レベルを表11-2の左列に示された値に設定します。
「適用」をクリックして、変更をOC4Jランタイムに適用します。
OC4Jログ・ファイルは、Application Server Controlを使用して表示できます。ファイルを表示するには、次のようにします。
Application Server Controlのページの一番下にある「ログ」リンクをクリックします。
「OC4J」を開きます。
「<instanceName>」を開きます。
診断メッセージ・ログを開きます。
すべてのODLログ・ファイルと同様に、新しいメッセージはそれぞれ、log.xml
という最新のログ・ファイルに格納されます。最大サイズに達すると、ログはlog
n
.xml
というアーカイブ・ログ・ファイルにコピーされます。n
は、1から始まる整数です。
oracle
ログ出力の構成は、j2ee-logging.xml
に定義されます。このファイルは、ORACLE_HOME
/j2ee/
instance
/config
ディレクトリにインストールされています。
Application Server Controlを使用してoracleログ出力を構成する手順:
OC4Jホームページで「管理」
をクリックします。
管理タスクから、「ログ出力の構成」
を選択して「ログ出力の構成」ページを表示します。
「すべてを開く」
をクリックして、現在OC4Jインスタンスにロードされているログ出力の全リストを表示します。
ページに表示されている任意のログ出力のログ・レベルを選択します。
j2ee-logging.xmlでoracleログ出力を構成する手順:
また、j2ee-logging.xml
構成ファイルは手動で編集することもできます。このファイルの変更後には、OC4Jを再起動してください。
構成ファイルには、<logging-configuration>
ルート要素内に次の2つの要素があります。
<log_handlers>
この要素には、異なる3つのログ・ハンドラを定義する<log_handler>
要素が含まれます。
oc4j-handler
oracle
ログ出力用のログ・ハンドラです。
oracle-webservices-management-auditing-handler
oracle.webservices.management.auditingログ出力用のログ・ハンドラです。
oracle-webservices-management-logging-handler
oracle.webservices.management.loggingログ出力用のログ・ハンドラです。
次のプロパティは、各ログ・ハンドラの<property>
サブ要素に指定します。
path
: ハンドラがログ・ファイルを生成するディレクトリを指定します。この値は変更しないでください。
maxFileSize
: ディレクトリ内のログ・ファイルに対して許容される最大サイズ(バイト単位)を設定します。この制限を超えると、新しいファイルが生成されます。
maxLogSize
: ログ・ファイル・ディレクトリに対して許容される最大サイズ(バイト単位)を設定します。この制限を超えると、最も古いログ・ファイルから消去されます。
<loggers>
この要素には、次の情報を定義する<logger>
要素が含まれます。
name
: ログ出力名。この値は変更しないでください。
level
: このログ出力が機能する最低ログ・レベル。このレベルは、デフォルトでODLの値NOTIFICATION:1
に設定されます。この値はApplication Server Controlの「ログ出力の構成」ページに表示されるJavaログ・レベルINFO
にマップされます。
この値は、Javaロギング・レベル(FINE
)またはODLメッセージ・タイプ:ログ・レベル(TRACE:1
)のいずれかに設定できます。
useParentHandlers
: ログ出力で親ハンドラを使用する必要があるかどうかを示します。この値はデフォルトでfalse
に設定されるため、oracle
ログ出力は親(root
ログ出力)に設定されたログ・レベルを継承しません。
<handler>
: 使用するハンドラの名前。この値は変更しないでください。
次の例では、ODLメッセージ・タイプ:ログ・レベルとしてTRACE:32
を指定し、デフォルトのログ・レベルをFINEST
に設定しています。
<logging_configuration> <log_handlers> <log_handler name='oc4j-handler' class='oracle.core.ojdl.logging.ODLHandlerFactory'> <property name='path' value='%ORACLE_HOME%/j2ee/%OPMN_PROC_TYPE%/log/ %OPMN_PROC_TYPE%_%OPMN_PROC_SET%_%OPMN_PROC_INDEX%/oc4j'/> <property name='maxFileSize' value='10485760'/> <property name='maxLogSize' value='104857600'/> </log_handler> </log_handlers> <loggers> <logger name='oracle' level='TRACE:32' useParentHandlers='false'> <handler name='oc4j-handler'/> </logger> </loggers> </logging_configuration>
アプリケーション・ログ・メッセージをOC4Jロギング・システムに送信し、LogViewerを使用してApplication Server Controlで表示できます。標準のJDKロギングAPIを使用する場合、ログ・ハンドラとログ・レベルを構成して、アプリケーションからのログ・エントリをOC4Jのメイン・ログであるORACLE_HOME
/j2ee/
instance
/log/oc4j/log.xml
に送信できます。このログは、LogViewerにより、診断ログとしてApplication Server Controlにリストされます。
LogViewerを使用してOC4Jログのアプリケーション・メッセージを表示する手順:
アプリケーションで、次に示すように、ログ出力ネーミング階層を使用し、異なるレベルでログ・メッセージを発行するようログ出力を設定します。
例11-1 異なるログ・レベルを設定するためのアプリケーション・ログ出力
Logger logger = Logger.get("emp.app.web.EmployeeFrontEnd"); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType(CONTENT_TYPE); logger.fine( String.format("Handling web request for %s", request.getRequestURL())); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>EmployeeFrontEnd</title></head>"); out.println("<body>"); Employee test = Employee.getTestInstance(); logger.finest( String.format("Test Employee Instance: %s", test)); logger.finest( String.format("Calling %s to locate office for %s", employeeManager.toString(), test.identifier(test.ID_SHORT))); String location = employeeManager.locateEmployeeOffice(test); logger.finest( String.format("bean returned %s for %s ", location, test.identifier(test.ID_SHORT))); out.printf("<p>Employee: %s</br>Office: %s</p>", test.identifier(test.ID_SHORT), location); logger.fine(String.format("Employee currently earns $%s", test.getSalary())); test.raiseSalary(15D); out.printf("<p>Give employee 15percent raise, now earns %s", test.getSalary()); out.println("</body></html>"); out.close(); }
次の例に示すように、j2ee-config.xml
ファイルの<logging_configuration>
要素に、アプリケーション・ログ出力名とログ・レベルを指定し、ログ出力でoc4j-handler
を使用するよう宣言する新しい<logger>
要素を追加します。
<logging_configuration> <log_handlers <log_handler name="oc4j-handler" class="oracle.core.ojdl.logging.ODLHandlerFactory"> <property name="path" value="../log/oc4j"/> <property name="maxFileSize" value="10485760"/> <property name="maxLogSize" value="104857600"/> <property name="encoding" value="UTF-8"/> <property name="supplementalAttributes" value="J2EE_APP.name, J2EE_MODULE.name,WEBSERVICE.name,WEBSERVICE_PORT.name"/> </log_handler> </log_handlers> <loggers> <logger name="oracle" level="NOTIFICATION:1" useParentHandlers="false"> <handler name="oc4j-handler"/> <handler name="console-handler"/> </logger> <logger name="emp" level="FINEST <handler name="oc4j-handler"/> </logger> </loggers> </logging_configuration>
oracle
ルート・ログ出力に書き込まれたすべてのメッセージは、oc4j-handler
に送信されます。このハンドラは、ORACLE_HOME
/j2ee/
instance
/log/oc4j/log.xml
ファイルにXML形式でメッセージを書き出します。
Application Server Controlのページの一番下にある「ログ」リンクをクリックし、図11-1に示すように、使用可能なすべてのログをリストします。
「ログ・ファイル」ページで、「診断ログ」をクリックし、LogViewerによりOC4Jログのメッセージが表示されるようにします。
図11-2に示すように、「診断ログ」ページには、OC4Jサーバーのログ・エントリおよびアプリケーションのログ・エントリが表示されます。各ログ・メッセージには、web_EmployeeFrontEnd
またはejb_EmployeeManagerBean
など、ログ・エントリが生成されたコンポーネントが表示されています。
個々のリクエストのすべてのログ・エントリを順番に表示するには、ログ・エントリの「実行コンテキストID」(ECID)リンクをクリックします。
Oracleロギング・フレームワークは、各ログ・メッセージに割り当てられたECIDに基づいて、同じ実行パスにある異なるコンポーネントからの様々なログ・エントリを関連付けることができます。図11-3に示すように、LogViewerにより、選択したECIDのすべてのログ・エントリがタイムスタンプ順に表示されます。
LogViewerの検索機能を使用して、OC4Jログの目的の項目を検索します。
アプリケーションが実行されてそのログ出力が登録された後、またはj2ee-config.xml
ファイルにそれらを構成した後には、Application Server Controlを使用してアプリケーション・ログ出力を構成できます。「ログ出力の構成」ページを使用すると、アプリケーション・ロギングを簡単にカスタマイズできます。
Application Server Controlを使用してアプリケーション・ログ出力を構成する手順:
OC4Jホームページで「管理」
をクリックします。
管理タスクから、「ログ出力の構成」
を選択して「ログ出力の構成」ページを表示します。
「すべてを開く」
をクリックして、現在OC4Jインスタンスにロードされているログ出力の全リストを表示します。
OC4Jログ出力およびアプリケーション・ログ出力が、各ログ出力のレベルを指定できる選択リストとともに表示されます。
ページにリストされている任意のログ出力のログ・レベルを選択します。
Oracle Application Serverディストリビューションには、OracleAppender
クラスを含むJARファイル(ORACLE_HOME
/diagnostics/lib/ojdl-log4j.jar
)が同梱されています。このクラスはOracle log4jアペンダで、log4jメッセージをOracle Diagnostic Logging(ODL)のXML形式に変換します。アプリケーションでこのアペンダを使用するには、アペンダを構成し、アプリケーションに対してlog4jクラス・ライブラリを使用可能にする必要があります。
log4j.properties
ファイルには、適切なlog4j設定と有効化するJavaログ・レベルを構成できます。例11-2に示すように、OracleAppender
を使用して、log4jエントリを取得し、Oracleログ・システムにルーティングできます。
例11-2 Oracle log4jアペンダの構成ファイル
log4j.rootLogger=TRACE,OJDL log4j.appender.OJDL=oracle.core.ojdl.log4j.OracleAppender log4j.appender.OJDL.LogDirectory=${oracle.j2ee.home}/log/oc4j #log4j.appender.APP1.MaxSize=1000000 #log4j.appender.APP1.MaxSegmentSize=200000 #log4j.appender.APP1.Encoding=iso-8859-1 log4j.appender.OJDL.ComponentId=OracleProd
この構成では、log4jメッセージがORACLE_HOME
/j2ee/home/log/oc4j/log.xml
ファイルに送信されます。LogViewerによりこのファイルが読み取られ、Application Server Controlに診断ログとして表示されます。
Oracle log4jアペンダを構成したら、OC4J共有ライブラリ・メカニズムを使用して、log4jクラス・ライブラリをOC4Jに公開し、アプリケーションにライブラリをインポートできます。
log4j.properties
ファイルのOracleAppender
クラスを使用して、アプリケーションにOracle log4jアペンダを構成できます。その後、デプロイ中にアプリケーションに構成をインポートできます。
デプロイ時にアプリケーションにlog4j.properties
ファイルをインポートするには、OC4J共有ライブラリ・メカニズムを使用します。OC4Jにより、クラス・パスからpropertiesファイルが読み取られます。log4j.properties
ファイルを含む共有ライブラリをアプリケーションにインポートすると、ファイルへのアクセスが可能になり、アプリケーションにlog4jを構成できます。
異なるログ・レベルを有効化し、アプリケーションのデプロイ時にファイルを選択するなどのために、異なるlog4j.properties
ファイルを含む一連の共有ライブラリをOC4Jに公開することもできます。デプロイ後、異なるログ設定の切替えを行えるように、アプリケーションが使用するlog4j.properties
ファイルを変更できます。
アプリケーションにOracle log4jアペンダを構成する手順:
log4j.config.info.jar
など、構成済ログ・レベルを示すファイル名を使用して、JARファイルにlog4j.properties
ファイルを配置します。
JARファイルを含むOC4J共有ライブラリを作成します。
図11-4に、Application Server Controlを使用してOC4Jインスタンスに共有ライブラリを作成する方法を示します。
図11-4 log4j.propertiesファイルを含むOC4J共有ライブラリ
図11-5には、アプリケーションにインポートできる、log4j.properties
ファイルを含む2つの異なる共有ライブラリがあることが示されています。
log4j.config.info
など、log4j.properties
ファイルを含む共有ライブラリを、デプロイ中にアプリケーションにインポートします。
図11-6に示すように、「デプロイ・タスク」ページで「クラスのロードの構成」を選択します。
図11-7に示すように、「クラスのロードの構成」ページの「共有ライブラリのインポート」領域で共有ライブラリを選択します。
log4.info
共有ライブラリにより、アプリケーションのlog4jログ・エントリの処理方法が決定されます。この場合、ルート・ログ出力はINFOレベルに設定され、OC4Jログ・システムへのログ・エントリの送信にOracleAppender
クラスが使用されます。
最終的に、アプリケーションのカスタマイズ済の共有ライブラリ設定は、図11-8に示すように、orion-application.xml
構成ファイルに書き込まれます。
アプリケーションでDEBUGやTRACEなどのさらに低いログ・レベルを使用するよう変更する場合は、orion-application.xml
の<import-shared-library>
要素を変更し、アプリケーションを再起動して、関連するlog4j.properties
ファイルが含まれる共有ライブラリをインポートします。OC4J共有ライブラリ・メカニズムと一貫性のあるネーミング規則を使用すると、再利用可能なlog4j構成をアプリケーションに必要なだけ作成できます。
Oracle log4jアペンダの構成後には、単一のlog.xml
ファイルに、log4jからのログ・メッセージとOC4Jからのログ・エントリが含まれます。
アプリケーションでOracle log4jアペンダを使用するには、アプリケーションに対してlog4jクラスを使用可能にする必要があります。これらのクラスは、log4j
およびojdl-log4j
ライブラリにあります。次のいずれかの方法で、アプリケーションに対してクラスを使用可能にできます。
アプリケーションにライブラリを含めます。
Java EE 5アプリケーションの場合は、<library-directory>
機能を使用して、共有ライブラリを格納するEARファイル内のディレクトリを指定し、そのディレクトリにlog4j
およびojdl-log4j
ライブラリを配置します。application.xml
ファイルの<library-directory>
要素で、アプリケーションの共有ライブラリを指定します。これにより、起動時に含めるアーカイブ用に指定したディレクトリがOC4Jによりスキャンされます。
log4j
およびojdl-log4j
ライブラリを含む共有ライブラリをOC4Jに作成し、そのデプロイ中にアプリケーションに共有ライブラリをインポートします。デプロイすると、アプリケーションでライブラリを使用できるようになります。
Webアプリケーションがある場合は、log4j
およびojdl-log4j
ライブラリをWEB-INF/lib
ディレクトリに配置すると、アプリケーションでそれらを使用できます。
ojdl-log4j
ライブラリはlog4j
ライブラリに依存しているため、同じクラス・ローダー・レベルでその両方がアクセス可能であることが必要です。