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
|
||||
page_item_wild CONSTANT VARCHAR2(4) := '$';
|
||||
page_item_prefix CONSTANT VARCHAR2(4) := 'P';
|
||||
--
|
||||
------------------------item_request_id CONSTANT VARCHAR2(30) := 'G_REQUEST_ID';
|
||||
|
||||
-- name of AUTH package
|
||||
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`
|
||||
--
|
||||
|
||||
@ -2120,12 +2120,12 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
||||
|
||||
-- add call stack
|
||||
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;
|
||||
|
||||
-- add error stack
|
||||
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;
|
||||
|
||||
-- print message to console
|
||||
@ -2268,11 +2268,11 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
||||
in_action_name => v_action_name,
|
||||
in_arg1 => v_component,
|
||||
in_arg2 => APEX_ERROR.GET_FIRST_ORA_ERROR_TEXT(p_error => p_error),
|
||||
in_payload => REPLACE (
|
||||
out_result.message || CHR(10) || '--' || CHR(10) ||
|
||||
p_error.error_statement || CHR(10) || '--' || CHR(10) ||
|
||||
--p_error.error_backtrace || CHR(10) || '--' || CHR(10)
|
||||
p_error.ora_sqlerrm || CHR(10) || '--' || CHR(10), app.schema_apex, '%')
|
||||
in_payload =>
|
||||
out_result.message || CHR(10) || '--' || CHR(10) ||
|
||||
app.get_shorter_stack(p_error.error_statement) || CHR(10) || '--' || CHR(10) ||
|
||||
app.get_shorter_stack (p_error.ora_sqlerrm) || CHR(10) || '--' || CHR(10)
|
||||
--app.get_shorter_stack (p_error.error_backtrace) || CHR(10) || '--' || CHR(10)
|
||||
);
|
||||
|
||||
-- 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 (
|
||||
in_log_id logs.log_id%TYPE := NULL
|
||||
)
|
||||
|
||||
@ -5,6 +5,7 @@ WITH p AS (
|
||||
a.alias AS app_alias,
|
||||
a.application_group AS app_group,
|
||||
a.owner AS app_schema,
|
||||
a.application_name AS app_name,
|
||||
a.authentication_scheme,
|
||||
a.last_updated_on,
|
||||
a.pages AS count_pages,
|
||||
@ -16,7 +17,7 @@ WITH p AS (
|
||||
)
|
||||
SELECT
|
||||
a.app_id,
|
||||
a.app_name,
|
||||
NVL(p.app_name, a.app_name) AS app_name,
|
||||
p.app_alias,
|
||||
p.app_group,
|
||||
p.app_schema,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user