Make call/error stack shorter for APEX and PL/SQL errors
This commit is contained in:
parent
29fd7fb00e
commit
1e8e1f18df
@ -73,8 +73,6 @@ CREATE OR REPLACE PACKAGE app AS
|
|||||||
-- transform $NAME to P500_NAME if current page_id = 500
|
-- transform $NAME to P500_NAME if current page_id = 500
|
||||||
page_item_wild CONSTANT VARCHAR2(4) := '$';
|
page_item_wild CONSTANT VARCHAR2(4) := '$';
|
||||||
page_item_prefix CONSTANT VARCHAR2(4) := 'P';
|
page_item_prefix CONSTANT VARCHAR2(4) := 'P';
|
||||||
--
|
|
||||||
------------------------item_request_id CONSTANT VARCHAR2(30) := 'G_REQUEST_ID';
|
|
||||||
|
|
||||||
-- name of AUTH package
|
-- name of AUTH package
|
||||||
auth_package CONSTANT VARCHAR2(30) := 'AUTH';
|
auth_package CONSTANT VARCHAR2(30) := 'AUTH';
|
||||||
@ -1166,6 +1164,16 @@ CREATE OR REPLACE PACKAGE app AS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Remove some not interesting calls from call/error stacks
|
||||||
|
--
|
||||||
|
FUNCTION get_shorter_stack (
|
||||||
|
in_stack VARCHAR2
|
||||||
|
)
|
||||||
|
RETURN VARCHAR2;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Finds and returns root `log_id` for passed `log_id`
|
-- Finds and returns root `log_id` for passed `log_id`
|
||||||
--
|
--
|
||||||
|
|||||||
@ -2120,12 +2120,12 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
|||||||
|
|
||||||
-- add call stack
|
-- add call stack
|
||||||
IF (SQLCODE != 0 OR INSTR(app.track_callstack, rec.flag) > 0) THEN
|
IF (SQLCODE != 0 OR INSTR(app.track_callstack, rec.flag) > 0) THEN
|
||||||
rec.payload := SUBSTR(rec.payload || REPLACE(REPLACE(app.get_call_stack(), 'WWV_FLOW', '%'), app.schema_apex, '%'), 1, app.length_payload);
|
rec.payload := SUBSTR(rec.payload || app.get_shorter_stack(app.get_call_stack()), 1, app.length_payload);
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- add error stack
|
-- add error stack
|
||||||
IF SQLCODE != 0 THEN
|
IF SQLCODE != 0 THEN
|
||||||
rec.payload := SUBSTR(rec.payload || REPLACE(REPLACE(app.get_error_stack(), 'WWV_FLOW', '%'), app.schema_apex, '%'), 1, app.length_payload);
|
rec.payload := SUBSTR(rec.payload || app.get_shorter_stack(app.get_error_stack()), 1, app.length_payload);
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- print message to console
|
-- print message to console
|
||||||
@ -2268,11 +2268,11 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
|||||||
in_action_name => v_action_name,
|
in_action_name => v_action_name,
|
||||||
in_arg1 => v_component,
|
in_arg1 => v_component,
|
||||||
in_arg2 => APEX_ERROR.GET_FIRST_ORA_ERROR_TEXT(p_error => p_error),
|
in_arg2 => APEX_ERROR.GET_FIRST_ORA_ERROR_TEXT(p_error => p_error),
|
||||||
in_payload => REPLACE (
|
in_payload =>
|
||||||
out_result.message || CHR(10) || '--' || CHR(10) ||
|
out_result.message || CHR(10) || '--' || CHR(10) ||
|
||||||
p_error.error_statement || CHR(10) || '--' || CHR(10) ||
|
app.get_shorter_stack(p_error.error_statement) || CHR(10) || '--' || CHR(10) ||
|
||||||
--p_error.error_backtrace || CHR(10) || '--' || CHR(10)
|
app.get_shorter_stack (p_error.ora_sqlerrm) || CHR(10) || '--' || CHR(10)
|
||||||
p_error.ora_sqlerrm || CHR(10) || '--' || CHR(10), app.schema_apex, '%')
|
--app.get_shorter_stack (p_error.error_backtrace) || CHR(10) || '--' || CHR(10)
|
||||||
);
|
);
|
||||||
|
|
||||||
-- mark associated page item (when possible)
|
-- mark associated page item (when possible)
|
||||||
@ -2517,6 +2517,27 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FUNCTION get_shorter_stack (
|
||||||
|
in_stack VARCHAR2
|
||||||
|
)
|
||||||
|
RETURN VARCHAR2
|
||||||
|
AS
|
||||||
|
out_stack VARCHAR2(32767);
|
||||||
|
BEGIN
|
||||||
|
out_stack := REPLACE(REPLACE(in_stack, 'WWV_FLOW', '%'), app.schema_apex, '%');
|
||||||
|
--
|
||||||
|
out_stack := REGEXP_REPLACE(out_stack, '\s.*SQL.*\.EXEC.*\]', '.');
|
||||||
|
out_stack := REGEXP_REPLACE(out_stack, '\s%.*EXEC.*\]', '.');
|
||||||
|
out_stack := REGEXP_REPLACE(out_stack, '\s%_PROCESS.*\]', '.');
|
||||||
|
out_stack := REGEXP_REPLACE(out_stack, '\s%_ERROR.*\]', '.');
|
||||||
|
out_stack := REGEXP_REPLACE(out_stack, '\s%_SECURITY.*\]', '.');
|
||||||
|
out_stack := REGEXP_REPLACE(out_stack, '\sHTMLDB*\]', '.');
|
||||||
|
--
|
||||||
|
RETURN out_stack;
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FUNCTION get_log_root (
|
FUNCTION get_log_root (
|
||||||
in_log_id logs.log_id%TYPE := NULL
|
in_log_id logs.log_id%TYPE := NULL
|
||||||
)
|
)
|
||||||
|
|||||||
@ -5,6 +5,7 @@ WITH p AS (
|
|||||||
a.alias AS app_alias,
|
a.alias AS app_alias,
|
||||||
a.application_group AS app_group,
|
a.application_group AS app_group,
|
||||||
a.owner AS app_schema,
|
a.owner AS app_schema,
|
||||||
|
a.application_name AS app_name,
|
||||||
a.authentication_scheme,
|
a.authentication_scheme,
|
||||||
a.last_updated_on,
|
a.last_updated_on,
|
||||||
a.pages AS count_pages,
|
a.pages AS count_pages,
|
||||||
@ -16,7 +17,7 @@ WITH p AS (
|
|||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
a.app_id,
|
a.app_id,
|
||||||
a.app_name,
|
NVL(p.app_name, a.app_name) AS app_name,
|
||||||
p.app_alias,
|
p.app_alias,
|
||||||
p.app_group,
|
p.app_group,
|
||||||
p.app_schema,
|
p.app_schema,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user