APEX_DEBUG_MESSAGEパッケージには、デバッグ・メッセージ・ログを管理するためのユーティリティ・ファンクションが用意されています。具体的には、このパッケージには、APEXアプリケーションに含まれるPL/SQLコードおよびデータベース・ストアド・プロシージャとファンクション内のPL/SQLコードのインストルメントおよびデバッグに必要なAPIが提供されています。PL/SQLコードをインストルメントすると、より迅速にバグを追跡し、予期しない動作を特定することが容易になります。
パッケージには、様々なデバッグ・レベルでのデバッグを有効または無効にする手段、およびメッセージ・ログをクリーンアップするユーティリティ・プロシージャもあります。
『Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド』のデバッグ・モードへのアクセスに関するセクションの説明を参照するか、またはAPEX_DEBUG_MESSAGESビューを問い合せることによって、メッセージ・ログを表示できます。
詳細は、個々のAPIの説明を参照してください。
トピック:
このプロシージャは、デバッグ・メッセージを無効にするために使用します。
構文
APEX_DEBUG_MESSAGE.DISABLE_DEBUG_MESSAGES;
パラメータ
なし。
例
次の例に、デバッグ・メッセージを無効にする方法を示します。
BEGIN
APEX_DEBUG_MESSAGE.DISABLE_DEBUG_MESSAGES();
END;
このプロシージャは、デバッグ・メッセージを有効にします。重要性のレベルごとに、監視されるデバッグ・メッセージのタイプを指定できます。
|
注意: ENABLE_DEBUG_MESSAGESプロシージャは、ページ・ビューまたはページ受入れごとに1回だけコールする必要があります。 |
構文
APEX_DEBUG_MESSAGE.ENABLE_DEBUG_MESSAGES (
p_level IN NUMBER DEFAULT 7);
パラメータ
表6-1では、ENABLE_DEBUG_MESSAGESプロシージャで使用可能なパラメータについて説明します。
表6-1 ENABLE_DEBUG_MESSAGESのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ログに記録するメッセージの1つ以上のレベル。1から7までの整数である必要があります。レベル1は重要度が最も高いメッセージで、レベル7(デフォルト)は重要度が最も低いメッセージです。特定のレベルを設定すると、そのレベルおよびそのレベルより下のメッセージが記録されます。たとえば、 |
例
次の例に、レベル1、2および3のメッセージのロギングを有効にする方法を示します。レベル4、5、6および7のメッセージはログに記録されません。
BEGIN
APEX_DEBUG_MESSAGE.ENABLE_DEBUG_MESSAGES(
p_level => 3);
END;
このプロシージャは、Application ExpressのPLSQLコンポーネント、またはPLSQLプロシージャおよびファンクションからデバッグ・メッセージを生成するために使用します。
構文
APEX_DEBUG_MESSAGE.LOG_MESSAGE (
p_message IN VARCHAR2 DEFAULT NULL,
p_enabled IN BOOLEAN DEFAULT FALSE,
p_level IN NUMBER DEFAULT 7);
パラメータ
表6-2では、LOG_MESSAGEプロシージャで使用可能なパラメータについて説明します。
表6-2 LOG_MESSAGEのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ログ・メッセージ(最大サイズは4000バイト)。 |
|
|
デバッグが有効かどうかに関係なく、メッセージを常にログに記録するには |
|
p_level |
ログ・メッセージのレベルを識別します。1から7までの整数である必要があります。レベル1は重要度が最も高く、レベル7(デフォルト)は重要度が最も低くなります。 |
例
次の例に、レベル1、2および3のメッセージに関してデバッグ・メッセージ・ロギングを有効にし、レベル1のメッセージと変数値を表示する方法を示します。デバッグは明示的に有効になっており、このパラメータのデフォルト設定の無効よりも、この有効の設定のほうが優先されるため、p_enabledパラメータを指定する必要はありません。
DECLARE
l_value varchar2(100) := 'test value';
BEGIN
APEX_DEBUG_MESSAGE.ENABLE_DEBUG_MESSAGES(p_level => 3);
APEX_DEBUG_MESSAGE.LOG_MESSAGE(
p_message => 'l_value = ' || l_value,
p_level => 1 );
END;
このプロシージャは、Application ExpressのPLSQLコンポーネント、またはPLSQLプロシージャおよびファンクションからデバッグ・メッセージを生成するために使用します。このプロシージャは、LOG_MESSAGEと同様ですが、より長いメッセージのロギングが可能な点のみ異なります。このメッセージ・ログは、デバッグ出力で4,000の文字のチャンクに分割されます。1つのデバッグ・メッセージは4,000文字までに制限されているためです。
構文
APEX_DEBUG_MESSAGE.LOG_LONG_MESSAGE (
p_message IN VARCHAR2 DEFAULT NULL,
p_enabled IN BOOLEAN DEFAULT FALSE,
p_level IN NUMBER DEFAULT 7);
パラメータ
表6-2では、LOG_LONG_MESSAGEプロシージャで使用可能なパラメータについて説明します。
表6-3 LOG_LONG_MESSAGEのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
長いログ・メッセージ(最大サイズは32767バイト)。 |
|
|
デバッグが有効かどうかに関係なく、メッセージを常にログに記録するには |
|
p_level |
長いログ・メッセージのレベルを識別します。1から7までの整数である必要があります。レベル1は重要度が最も高く、レベル7(デフォルト)は重要度が最も低くなります。 |
例
次の例に、レベル1、2および3のメッセージに関してデバッグ・メッセージ・ロギングを有効にし、32767文字まで含むことができるレベル1のメッセージを表示する方法を示します。デバッグは明示的に有効になっており、このパラメータのデフォルト設定の無効よりも、この有効の設定のほうが優先されるため、p_enabledパラメータを指定する必要はありません。
DECLARE
l_msg VARCHAR2(32767) := 'Debug will output anything up to varchar2 limit';
BEGIN
APEX_DEBUG_MESSAGE.ENABLE_DEBUG_MESSAGES(p_level => 3);
APEX_DEBUG_MESSAGE.LOG_LONG_MESSAGE(
p_message => l_msg,
p_level => 1 );
END;
このプロシージャは、ページのセッション・ステートを記録するために使用します。
構文
APEX_DEBUG_MESSAGE.LOG_PAGE_SESSION_STATE (
p_page_id IN NUMBER DEFAULT NULL,
p_enabled IN BOOLEAN DEFAULT FALSE,
p_level IN NUMBER DEFAULT 7);
パラメータ
表6-4では、LOG_PAGE_SESSION_STATEプロシージャで使用可能なパラメータについて説明します。
表6-4 LOG_PAGE_SESSION_STATEのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
現在のアプリケーションとワークスペース内のページを識別します。値がこのパラメータに渡されない場合、アプリケーションの現在のページが使用されます。 |
|
|
デバッグが有効かどうかに関係なく、メッセージを常にログに記録するには |
|
p_level |
長いログ・メッセージのレベルを識別します。1から7までの整数である必要があります。レベル1は重要度が最も高く、レベル7(デフォルト)は重要度が最も低くなります。 |
例
次の例に、レベル1、2および3のメッセージに関してデバッグ・メッセージ・ロギングを有効にし、レベル1のメッセージをアプリケーションの現在のページのすべてのセッション・ステートを含めて表示する方法を示します。デバッグは明示的に有効になっており、このパラメータのデフォルト設定の無効よりも、この有効の設定のほうが優先されるため、p_enabledパラメータを指定する必要はありません。また、この例ではアプリケーションの現在のページのセッション・ステート情報を示すだけであるため、p_page_idを指定していません。
BEGIN
APEX_DEBUG_MESSAGE.ENABLE_DEBUG_MESSAGES(p_level => 3);
APEX_DEBUG_MESSAGE.LOG_PAGE_SESSION_STATE (p_level => 1);
END;
このプロシージャは、デバッグ・メッセージ・ログから指定日数より古いすべてのデータを削除するために使用します。
構文
APEX_DEBUG_MESSAGE.REMOVE_DEBUG_BY_AGE (
p_application_id IN NUMBER,
p_older_than_days IN NUMBER);
パラメータ
表6-5では、REMOVE_DEBUG_BY_AGEプロシージャで使用可能なパラメータについて説明します。
表6-5 REMOVE_DEBUG_BY_AGEのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
アプリケーションのアプリケーションID |
|
|
データが削除される前に、デバッグ・メッセージ・ログに保持される日数。 |
例
次の例に、現在のアプリケーションに関するデバッグ・メッセージで、保持日数が3日以上になるものを削除する方法を示します。
BEGIN
APEX_DEBUG_MESSAGE.REMOVE_DEBUG_BY_AGE (
p_application_id => TO_NUMBER(:APP_ID),
p_older_than_days => 3 );
END;
このプロシージャは、デバッグ・メッセージ・ログから、指定アプリケーションに属するすべてのデータを削除するために使用します。
構文
APEX_DEBUG_MESSAGE.REMOVE_DEBUG_BY_APP (
p_application_id IN NUMBER);
パラメータ
表6-5では、REMOVE_DEBUG_BY_APPプロシージャで使用可能なパラメータについて説明します。
例
次の例に、現在のアプリケーションに関してログに記録されたすべてのデバッグ・メッセージを削除する方法を示します。
BEGIN
APEX_DEBUG_MESSAGE.REMOVE_DEBUG_BY_APP(
p_application_id => TO_NUMBER(:APP_ID) );
END;
このプロシージャは、指定されたビューのすべてのデータをメッセージ・ログから削除するために使用します。
構文
APEX_DEBUG_MESSAGE.REMOVE_DEBUG_BY_VIEW (
p_application_id IN NUMBER,
p_view_id IN NUMBER);
パラメータ
表6-7では、REMOVE_DEBUG_BY_VIEWプロシージャで使用可能なパラメータについて説明します。
例
次の例に、現在のアプリケーションに属している、ビュー識別子が12345のデバッグ・メッセージを削除する方法を示します。
BEGIN
APEX_DEBUG_MESSAGE.REMOVE_DEBUG_BY_VIEW (
p_application_id => TO_NUMBER(:APP_ID),
p_view_id => 12345 );
END;
このプロシージャは、ワークスペース内の指定したセッションからのすべてのデータを、デバッグ・メッセージ・ログから削除するために使用します。
構文
APEX_DEBUG_MESSAGE.REMOVE_SESSION_MESSAGES (
p_session IN NUMBER DEFAULT NULL);
パラメータ
表6-8では、REMOVE_SESSION_MESSAGESプロシージャで使用可能なパラメータについて説明します。
例
次の例に、現在のセッションでログに記録されたすべてのデバッグ・メッセージを削除する方法を示します。注意: p_sessionパラメータの値が渡されないため、プロシージャではデフォルトで現在のセッションが使用されます。
BEGIN
APEX_DEBUG_MESSAGE.REMOVE_SESSION_MESSAGES();
END;