Oracle E-Business Suite開発者ガイド リリース12.2 E53035-01 | ![]() 目次 | ![]() 前へ | ![]() 次へ |
Oracle E-Business Suite Logging Frameworkは、デバッグ、エラー・レポートおよびアラート目的のログ・メッセージを格納および取得する機能を備えています。
Oracle Applications ManagerにあるHTMLベースのユーザー・インタフェース・ページから、ログ・メッセージを設定、表示およびパージできます。これらのページの詳細は、『Oracle E-Business Suiteメンテナンス・ガイド』を参照してください。
ロギングに関するこの章と次の章の対象読者は、次のとおりです。
アプリケーション開発者およびコンサルタント - このマニュアルを使用して、アラートおよびログ・メッセージをコードに追加する方法を習得できます。また、デバッグ目的でログ・メッセージを確認できます。
システム管理者 - システム管理者はアラートおよびログ・メッセージをモニターして、システム・アクティビティを管理し、問題のトラブルシューティングを行う必要があります。詳細は、『Oracle E-Business Suiteメンテナンス・ガイド』を参照してください。
Oracle E-Business Suiteログ・メッセージはすべて中央リポジトリに格納されます。
メッセージは、中間層とデータベース・サーバー間で相互に関連付けることができます。
自律トランザクションを使用してデータベースにログを記録します。
メッセージの分析を容易にするために、コンテキスト情報が内部的に取得されます。
構成可能なシステム・アラートによって、Eメール通知およびポケットベル通知が可能になります。
メッセージには最大サイズ4GBの添付が可能です。
Java、PL/SQLおよびCでの実装。
記録するメッセージを制御するには、次のいくつかの方法があります。
アプリケーション・ユーザー、職責、アプリケーションまたはサイトに基づいて、ロギングをオンにするようにデータベースのOracle Application Object Library (FND)プロファイルを設定します。
重要度に基づいて記録するメッセージを制御するロギング・レベルを設定します。重要度は、STATEMENT (最低の重要度)からUNEXPECTED (最高の重要度)まで6つあります。
ソース・モジュールでログ・メッセージをフィルタ処理します。ワイルドカード文字(%)の使用がサポートされています。
プロセスごとにロギングをオンにします。
JVM内のスレッドごとにロギングをオンにします。
次の各項では、Logging Frameworkで使用される用語をいくつか説明します。
完全なログ・メッセージには、一連のメッセージ識別子およびログ・メッセージの実際のテキストが含まれます。開発者が設定する必要がある識別子は、メッセージ、モジュールおよび重要度のみです。それ以外はすべて、Logging Frameworkによって自動的に取得されます。
ログ・メッセージには次の内容が含まれます。
タイム・スタンプ: メッセージが記録された時間。
ログ順序: メッセージに対して内部的に生成される一意の順序番号。
ユーザーID: アプリケーション・ユーザーの一意識別子(FND_USERへの外部キー)。
職責ID: ユーザーの現在の職責(FND_RESPONSIBILITYへの外部キー)。
アプリケーションID: ユーザーの現在のアプリケーション(FND_APPLICATIONへの外部キー)。
セッションID: アプリケーション・ユーザー・セッションの一意識別子(ICX_SESSIONSへの外部キー)。
トランザクションID: アプリケーションのランタイム・コンテキストを識別するための一意識別子。現在、4種類のトランザクション・タイプがサポートされています。
コンカレント・プログラム(CP): CP ID (FND_CONCURRENT_PROGRAMSへの外部キー)、要求ID (FND_CONCURRENT_REQUESTSへの外部キー)は自動的に取得されます。
フォーム機能: フォームID (FND_FORMSへの外部キー)、機能ID (FND_FORM_FUNCTIONSへの外部キー)は自動的に取得されます。
ICX: ICXセッションID (ICX_SESSIONSへの外部キー)およびICXトランザクションID (ICX_TRANSACTIONSへの外部キー)は自動的に取得されます。
サービス: プロセスID (fnd_concurrent_processesへの外部キー)、コンカレント・キューID (fnd_concurrent_queuesへの外部キー)は自動的に取得されます。
ノード: メッセージが生成されたマシンのホスト名。
ノードIPアドレス: メッセージが生成されたマシンのIPアドレス。
JVM ID: メッセージが生成されたJavaプロセスの一意識別子。
AUDSID: データベース接続の一意識別子(userenv('SESSIONID'))。
プロセスID: データベース・プロセスの一意識別子(v$session.Process)。
スレッドID: メッセージが生成されたJavaプロセス内のスレッドの一意識別子。
重要度: メッセージの重要度を示す6つの定義済値の1つ。後述する詳細な説明を参照してください。
モジュール: メッセージのソースを表します。通常、Javaでは、これは完全クラス名です。クラス名が「oracle.apps」で始まる場合、記録されるメッセージでは先頭の「oracle.apps」が削除されます。たとえば、「oracle.apps.jtf.util.Encoder」は「jtf.util.Encoder」と記録されます。
メッセージ・テキスト: メッセージの本文。現在サポートされている最大長は4000バイトです。マルチバイト文字の場合は適切に調整してください。追加領域が必要な場合は、最大4GBのログ添付を追加できます。
モジュール・フィルタは、特定のモジュールに対してロギングを実行するように構成できる、文字列のカンマ区切りリスト(オプション)です。必要に応じて、ワイルドカード(%)を使用できます。例: fnd%, jtf%, store%, cart%。
各ログ・メッセージは、次の6つの重要度のいずれかに属します(最低の重要度から最高の重要度まで): 1-STATEMENT、2-PROCEDURE、3-EVENT、4-EXCEPTION、5-ERRORまたは6-UNEXPECTED。
ロギング・レベルは、メッセージのロギングを制御するために設定できるしきい値です。ロギング・レベルは、前述した定義済の6つの重要度のいずれかに設定できます。ロギング・レベルを設定すると、重要度が定義済レベル以上のメッセージのみ記録されます。たとえば、ロギング・レベルを5-ERRORに設定すると、5-ERRORおよび6-UNEXPECTEDのメッセージについてロギングが発生します。ロギング・レベルを最低の重要度1-STATEMENTに設定すると、6つの重要度すべてのメッセージが記録されます。
次のパラメータによってロギングを管理します。
AFLOG_ENABLED
ロギングが使用可能かどうかを指定します。デフォルト値はNULL (False)です。
AFLOG_LEVEL
ロギング・レベルを指定します。デフォルト値はNULL (Log.UNEXPECTED)です。
AFLOG_MODULE
記録するモジュールを指定します。デフォルト値はNULL (%)です。
AFLOG_FILENAME
中間層のログ・メッセージが書き込まれるファイルを指定します。
これらのパラメータは、中間層プロパティ、Oracle Application Object Library (FND)プロファイル・オプション値、またはこの両方の組合せとして設定できます。中間層プロパティは、Javaシステム・プロパティまたはC環境変数を使用して設定されます。中間層設定は、データベース設定より優先されます。これによって、データベースからグローバルに、または中間層からローカルにロギングを管理できます。
パラメータが中間層プロパティまたはOracle Application Object Library (FND)プロファイル・オプション値として設定されていない場合は、デフォルト値が使用されます。中間層プロパティは中間層のロギングにのみ影響し、データベース(PL/SQL)レイヤーのロギングには影響しません。
各ログ・メッセージには、メッセージの作成者が決定するモジュールとレベルが関連付けられています。使用可能なインスタンス(AFLOG_ENABLED=TRUE)中にログ・メッセージが実際に記録されるかどうかは、メッセージのレベルとモジュールをAFLOG_LEVELとAFLOG_MODULEの設定と比較する方法によって決まります。メッセージのレベルはAFLOG_LEVELの値以上で、モジュールはフィルタAFLOG_MODULEと一致する必要があります。
次に、ロギング・パラメータの詳細を説明します。
AFLOG_ENABLEDは、ロギングが使用可能かどうかを決定します。データベース層では、可能な値はYとNです。中間層では、可能な値はTRUEとFALSEです。
中間層プロパティを使用してAFLOG_ENABLEDがFALSEに設定された場合、中間層でロギングは発生しません。Oracle Application Object Library (FND)プロファイルを使用してAFLOG_ENABLEDがNに設定された場合、データベース層でロギングは発生しません。
AFLOG_ENABLEDがTRUEに設定された場合、該当するレベルとモジュールのログ・メッセージがデータベースまたはファイルのいずれかに記録されます。中間層プロパティとして設定されたパラメータ値は、データベース・プロファイル・オプション値として設定された値よりも優先されるため、特定の中間層プロセスに対して、プロパティを使用してロギングをグローバルに使用可能または使用不可にできます。たとえば、JVMで中間層ロギングを完全に使用不可にするには、-DAFLOG_ENABLED=FALSEを使用します。
例:
/local/java/jdk1.2.2/bin/java -DAFLOG_ENABLED=FALSE org.apache.jserv.JServ
このようにAFLOG_ENABLEDが設定されると、データベース・プロファイル・オプション値を使用して設定された値が上書きされます。
同様に、ロギングをグローバルに使用可能にできます。-DAFLOG_ENABLED=TRUEを使用すると、AFLOG_ENABLEDのデータベース・プロファイル・オプション値がNのユーザーに対しても、ロギングが使用可能になります。
次の表に、中間層パラメータがデータベース・プロファイル・オプション値より優先されることを示します。
データベース層の値 | 中間層の値 | 結果 |
---|---|---|
Y | TRUE | ロギングは中間層とデータベースの両方で発生します。 |
Y | FALSE | ロギングはデータベースでのみ発生します。 |
N | TRUE | ロギングは中間層でのみ発生します。 |
N | FALSE | ロギングは発生しません。 |
AFLOG_LEVELはロギング・レベルを指定します。メッセージが記録されるには、メッセージの重要度がAFLOG_LEVELの値以上である必要があります。
中間層プロパティを使用して設定された値は、データベースで設定されたプロファイル・オプション値より優先されます。たとえば、次のように、システム・プロパティでロギング・レベルをEXCEPTIONに設定できます。
/local/java/jdk1.2.2/bin/java -DAFLOG_LEVEL=EXCEPTION org.apache.jserv.JServ
次の表に、エラー・レポート用にサポートされているロギング・レベルを示します。
ロギング・レベル | 値 | 内容 | 対象 | 例 |
---|---|---|---|---|
Unexpected | 6 | 未処理の内部ソフトウェア・エラーを示します(一般的にコードまたは環境の修正が必要です)。 | 顧客サイトのシステム管理者、およびOracle開発およびサポート・チーム。 | 「メモリー不足です。」「必須フィールドが見つかりません。」「データ整合性エラーです。」「構成エラー: 必須プロパティが見つからないので構成ファイルにアクセスできません。」「DB SQLExceptionにより新規発注に失敗しました。」「要求の処理中に接続の取得に失敗しました。」 |
Error | 5 | 外部エンド・ユーザー・エラーを示します(一般的にエンド・ユーザーによる修正が必要です)。 | 顧客サイトのシステム管理者、およびOracle開発およびサポート・チーム。 | 「無効なユーザー名またはパスワードです。」「ユーザーが重複した値をフィールドに入力しました。」 |
Exception | 4 | 処理済の内部ソフトウェア・エラーを示します(一般的に修正は不要です)。 | Oracle開発およびサポート・チーム。 | 「プロファイルが見つかりません。」「セッションがタイムアウトしました。」「ネットワーク・ルーチンが接続できませんでした; 再試行中」 |
次の表に、進捗レポート用にサポートされているロギング・レベルを示します。
ロギング・レベル | 値 | 内容 | 対象 | 例 |
---|---|---|---|---|
Event | 3 | 高レベルの進捗レポートに使用されます。 | Oracle開発およびサポート・チーム。 | 「ユーザーを正常に認証しました。」「ユーザー作業環境を正常に取得しました。」「メニュー・レンダリングが完了しました。」 |
Procedure | 2 | APIレベルの進捗レポートに使用されます。 | Oracle開発およびサポート・チーム。 | 「PL/SQLプロシージャXYZをコールします。」「PL/SQLプロシージャXYZから戻します。」 |
Statement | 1 | 低レベルの進捗レポートに使用されます。 | Oracle開発およびサポート・チーム。 | 「プールからの接続を取得しました。」「要求パラメータを取得しました。」「名前と値を使用してCookieを設定します。」 |
モジュール名の書式は次のとおりです。
<application short name>.<directory>.<file>.<routine>.<label>
例: fnd.common.AppsContext.logOut.begin (<application short name> = fnd、<directory> = common、<file> = AppsContext、<routine> = logOut、<label> = begin)。
パラメータによってクラスの名前からモジュールが自動的に構成されるため、Javaフレームワークはクラスまたは当該オブジェクトを取得するメソッドを記述します。たとえば、ログ・メッセージがoracle.apps.fnd.common.AppsContext.classのインスタンスから書き込まれる場合、モジュール名はfnd.common.AppsContextになります。先頭のoracle.appsは常に削除されることに注意してください。
AFLOG_MODULEパラメータは、ログ・メッセージのモジュール名を比較するフィルタです。パーセント記号(%)はワイルドカードとして使用されます。すべてのモジュールを選択するには、AFLOG_MODULEを%に設定します。oracle.apps.fnd.common.AppsContextクラスからのメッセージのみ記録するには、AFLOG_MODULEをfnd.common.AppsContext%に設定します。
デフォルト値はNULLです(データベースに記録します。データベース・ロギングが失敗すると、デフォルト・ファイルの./aferror.logに記録します)。
AFLOG_FILENAMEは、中間層ログ・メッセージが書き込まれるファイルを指定します。ファイル名が中間層プロパティとして指定されると、中間層ログ・メッセージはそのファイルに書き込まれます。PL/SQLレイヤーでのメッセージは常にデータベース表に記録されます。
ファイル名が中間層プロパティとして指定されない場合は、次のように処理されます。
ファイル名のデータベース・プロファイル・オプション値がデータベースに設定されていない場合、またはエラーによってファイルにアクセスできない場合、ログ・メッセージはデフォルト・ファイル(aferror.log)に書き込まれます。
AFLOG_FILENAMEのデータベース・プロファイル・オプション値がアクセス可能な場合は、データベース値が読み取られます。
データベース・プロファイル・オプション値がnullの場合、メッセージはデータベースに書き込まれます。
データベース・プロファイル・オプション値がnullでない場合、メッセージは指定のファイルに書き込まれます。
中間層プロセスに指定のファイルに対する書込み権限がない場合、ログ・メッセージはデフォルト・ファイルに記録されます。デフォルト・ログ・ファイルに書き込むことができない場合、ログ・メッセージはSTDERRに書き込まれます。
ファイル名にフル・パスが指定されていない場合、パスは現在の作業ディレクトリへの相対パスと見なされます。
中間層プロセスごとに別個のログ・ファイルが必要な場合は、各プロセスにAFLOG_FILENAMEの中間層プロパティ値を指定します。
前述した4つの標準ログ・パラメータ以外に、AFLOG_ECHOはJava層でのみ使用できます。これを使用して、ログ・メッセージをSTDERRに送信します。
-DAFLOG_ECHO=TRUEで、ロギングが使用可能な場合、フィルタされたすべてのメッセージは、構成済のファイルまたはデータベース以外に、STDERRにも記録されます。
Copyright © 1995, 2013, Oracle and/or its affiliates. All rights reserved.