Skip to content

Commit 2ba0715

Browse files
committed
Small improvements to debug log.
1 parent 3d9e7e4 commit 2ba0715

4 files changed

Lines changed: 35 additions & 13 deletions

File tree

source/api/ut_runner.pkb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ create or replace package body ut_runner is
110110
if a_paths is null or a_paths is empty or a_paths.count = 1 and a_paths(1) is null then
111111
l_paths := ut_varchar2_list(sys_context('userenv', 'current_schema'));
112112
else
113-
for i in 1..a_paths.COUNT loop
113+
for i in 1..a_paths.count loop
114114
l_paths := l_paths multiset union ut_utils.string_to_table(a_string => a_paths(i),a_delimiter => ',');
115115
end loop;
116116
end if;

source/core/events/ut_event_manager.pkb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,14 @@ create or replace package body ut_event_manager as
5858
end;
5959

6060
procedure trigger_event( a_event_name t_event_name, a_event_object ut_event_item := null ) is
61-
procedure trigger_listener_event( a_listener_numbers t_listener_numbers, a_event_name t_event_name, a_event_object ut_event_item ) is
62-
l_listener_number t_listener_number;
61+
62+
procedure trigger_listener_event(
63+
a_listener_numbers t_listener_numbers,
64+
a_event_name t_event_name,
65+
a_event_object ut_event_item
66+
) is
67+
l_listener_number t_listener_number := a_listener_numbers.first;
6368
begin
64-
l_listener_number := a_listener_numbers.first;
6569
while l_listener_number is not null loop
6670
g_listeners(l_listener_number).on_event(a_event_name, a_event_object);
6771
l_listener_number := a_listener_numbers.next(l_listener_number);

source/reporters/ut_debug_reporter.tpb

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ create or replace type body ut_debug_reporter is
1919
constructor function ut_debug_reporter(self in out nocopy ut_debug_reporter) return self as result is
2020
begin
2121
self.init($$plsql_unit);
22+
self.start_time := current_timestamp();
23+
self.event_time := current_timestamp();
2224
return;
2325
end;
2426

@@ -28,26 +30,41 @@ create or replace type body ut_debug_reporter is
2830
end;
2931

3032
overriding member procedure on_event( self in out nocopy ut_debug_reporter, a_event_name varchar2, a_event_item ut_event_item) is
31-
begin
33+
c_time constant timestamp := current_timestamp();
34+
c_time_from_start constant interval day(0) to second(6) := (c_time - self.start_time);
35+
c_time_from_prev constant interval day(0) to second(6) := (c_time - self.event_time);
36+
l_debug varchar2(32767);
37+
l_stack varchar2(32767) := dbms_utility.format_call_stack();
38+
begin
39+
l_stack := regexp_replace(
40+
substr( l_stack, instr( l_stack, chr(10), 1, 6 ) +1 ),
41+
'[0-9abcdefx]+ +([0-9]+) +(package |type )?(body )?(.*)','at "\4", line \1');
42+
3243
if a_event_name = ut_event_manager.gc_initialize then
3344
self.on_initialize(null);
45+
self.print_text('<DEBUG_LOG>');
3446
end if;
47+
l_debug :=
48+
to_clob( '<DEBUG>' || chr(10)
49+
|| ' <TIMESTAMP>' || ut_utils.to_string(c_time) || '</TIMESTAMP>' || chr(10)
50+
|| ' <TIME_FROM_START>' || c_time_from_start || '</TIME_FROM_START>' || chr(10)
51+
|| ' <TIME_FROM_PREVIOUS>' || c_time_from_prev || '</TIME_FROM_PREVIOUS>' || chr(10)
52+
|| ' <EVENT_NAME>' || a_event_name || '</EVENT_NAME>' || chr(10)
53+
|| ' <CALL_STACK>' || l_stack || '</CALL_STACK>' || chr(10)
54+
);
3555
if a_event_item is not null then
3656
self.print_clob(
37-
to_clob( '<DEBUG><EVENT_NAME>' || a_event_name || '</EVENT_NAME>' || chr(10) )
38-
|| a_event_item.to_clob()
39-
|| to_clob('</DEBUG>'),
57+
to_clob( l_debug ) || a_event_item.to_clob() || to_clob('</DEBUG>'),
4058
ut_event_manager.gc_debug
4159
);
4260
else
43-
self.print_clob(
44-
'<DEBUG><EVENT_NAME>' || a_event_name || '</EVENT_NAME>' || chr(10) || '</DEBUG>',
45-
ut_event_manager.gc_debug
46-
);
61+
self.print_clob( l_debug || '</DEBUG>', ut_event_manager.gc_debug );
4762
end if;
4863
if a_event_name = ut_event_manager.gc_finalize then
64+
self.print_text('</DEBUG_LOG>');
4965
self.on_finalize(null);
5066
end if;
67+
self.event_time := current_timestamp();
5168
end;
5269

5370
end;

source/reporters/ut_debug_reporter.tps

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ create or replace type ut_debug_reporter under ut_output_reporter_base(
1515
See the License for the specific language governing permissions and
1616
limitations under the License.
1717
*/
18-
18+
start_time timestamp,
19+
event_time timestamp,
1920
constructor function ut_debug_reporter(self in out nocopy ut_debug_reporter) return self as result,
2021
/**
2122
* Returns the list of events that are supported by particular implementation of the reporter

0 commit comments

Comments
 (0)