Skip to content

Commit c0eb388

Browse files
committed
Merge pull request #1 from Shoelace/development
Development
2 parents b733a56 + 38cc2c7 commit c0eb388

16 files changed

+632
-20
lines changed

src/Appender/Appender.type.plb

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
create or replace
2+
TYPE BODY Appender
3+
as
4+
member function getName return varchar2
5+
is
6+
begin
7+
return m_name;
8+
end;
9+
10+
member procedure append(event LogEvent)
11+
is
12+
begin
13+
null;
14+
end;
15+
16+
member function getLayout return Layout
17+
is
18+
begin
19+
return m_layout;
20+
end;
21+
22+
member function toString return varchar2
23+
is
24+
begin
25+
return 'Appender('||m_name||',...)';
26+
end;
27+
28+
map member function Compare return varchar2
29+
is
30+
begin
31+
return toString();
32+
end;
33+
34+
constructor function Appender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result
35+
is
36+
begin
37+
m_name := name;
38+
m_filter := filter;
39+
m_layout := layout;
40+
return;
41+
end;
42+
43+
44+
45+
member procedure addFilter(Filter filter)
46+
IS BEGIN
47+
if self.m_filter IS NULL THEN
48+
self.m_filter := filter;
49+
ELSIF self.m_filter is of (CompositeFilter) THEN
50+
null;-- treat(self.m_filter as CompositeFilter).addFilter(filter);
51+
ELSE
52+
NULL;
53+
--final Filter[] filters = new Filter[] {self.filter, filter};
54+
--self.filter = CompositeFilter.createFilters(filters);
55+
END IF;
56+
END;
57+
58+
/**
59+
* Remove a Filter.
60+
* @param filter The Filter to remove.
61+
*/
62+
member procedure removeFilter(Filter filter)
63+
IS BEGIN
64+
if (self.m_filter = filter) THEN
65+
self.m_filter := null;
66+
elsif (filter is of (CompositeFilter)) then
67+
--CompositeFilter composite = (CompositeFilter) filter;
68+
--composite = composite.removeFilter(filter);
69+
--if (composite.size() > 1) {
70+
--self.filter = composite;
71+
--} else if (composite.size() == 1) {
72+
--final Iterator<Filter> iter = composite.iterator();
73+
--self.filter = iter.next();
74+
--} else {
75+
--self.filter = null;
76+
--}
77+
null;
78+
end if;
79+
END;
80+
81+
member function hasFilter return boolean
82+
is begin
83+
return m_filter IS NOT NULL;
84+
end;
85+
86+
member function isFiltered(event LogEvent) return boolean
87+
IS BEGIN
88+
return m_filter is not null AND m_filter.dofilter(event) = Result.DENY;
89+
--return filter != null && filter.filter(event) == Filter.Result.DENY;
90+
END;
91+
end;
92+
/
93+
show errors

src/Appender/Appender.type.pls

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
prompt create or replace TYPE Appender
22
create or replace
33
TYPE Appender
4+
AUTHID DEFINER
45
as object
56
(
67
/* The name of this Appender. */
78
m_name varchar2(255),
89
m_layout Layout,
10+
m_filter Filter,
911

1012
member function getName return varchar2,
1113
member procedure append(event LogEvent) ,
@@ -16,14 +18,21 @@ as object
1618

1719
member function toString return varchar2,
1820

19-
--constructor function Appender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result,
20-
constructor function Appender(name VARCHAR2, filter varchar2, layout Layout,ignoreExceptions boolean ) return self as result,
21+
constructor function Appender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result,
2122

2223
map member function Compare return varchar2
2324

25+
--abstractfilterable interface
26+
27+
,member procedure addFilter(Filter filter)
28+
,member procedure removeFilter(Filter filter)
29+
,member function hasFilter return boolean
30+
31+
,member function isFiltered(event LogEvent) return boolean
32+
33+
2434
)
2535
not final not instantiable ;
2636
/
2737
show errors
2838

29-

src/Appender/DBMSOutputAppender.type.pls

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ create or replace
22
TYPE DBMSOutputAppender
33
under Appender
44
(
5-
--constructor function Appender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result,
6-
constructor function DBMSOutputAppender(name VARCHAR2, filter varchar2, layout Layout,ignoreExceptions boolean ) return self as result
5+
constructor function DBMSOutputAppender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result
76

87
,overriding member procedure append(event LogEvent)
98

@@ -18,8 +17,7 @@ create or replace
1817
TYPE BODY DBMSOutputAppender
1918
as
2019

21-
--constructor function Appender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result,
22-
constructor function DBMSOutputAppender(name VARCHAR2, filter varchar2, layout Layout,ignoreExceptions boolean ) return self as result
20+
constructor function DBMSOutputAppender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result
2321
IS
2422
BEGIN
2523
self.m_name := name;

src/Appender/SMTPAppender.type.pls

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
create or replace
2+
TYPE SMTPAppender
3+
under Appender
4+
(
5+
constructor function SMTPAppender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result
6+
7+
,overriding member procedure append(event LogEvent)
8+
9+
10+
)
11+
final instantiable ;
12+
/
13+
show errors
14+
15+
16+
create or replace
17+
TYPE BODY SMTPAppender
18+
as
19+
20+
constructor function SMTPAppender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result
21+
IS
22+
BEGIN
23+
self.m_name := name;
24+
self.m_layout := layout;
25+
self.m_filter := filter;
26+
NULL;
27+
return;
28+
END;
29+
30+
overriding member procedure append(event LogEvent)
31+
IS
32+
PRAGMA AUTONOMOUS_TRANSACTION;
33+
34+
ll LogLevel := event.getLevel();
35+
--t GenericException := event.getthrown();
36+
--m Message := event.GetMessage();
37+
--msg log_table.logmessage%TYPE := m.getformattedmessage();
38+
--cm ThreadContextContextMap := event.getContextMap();
39+
40+
dolog boolean := true;
41+
42+
BEGIN
43+
--if isfiltered() then
44+
--end if;
45+
if dolog THEN
46+
dbms_output.put_line('EMAIL');
47+
send_mail(p_to => 'dsplbrun@abdn.ac.uk'
48+
,p_from => 'log4@esbdev'
49+
,p_subject => 'LOG4 message'
50+
,p_text_msg => m_layout.format(event)
51+
,p_smtp_host =>'mail.abdn.ac.uk'
52+
);
53+
END IF;
54+
END;
55+
56+
end;
57+
/
58+
show errors
59+
60+

src/Appender/TableAppender.type.plb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ create or replace
22
TYPE BODY TableAppender
33
AS
44

5-
constructor function TableAppender(name VARCHAR2, filter varchar2, layout Layout,ignoreExceptions boolean ) return self as result
5+
constructor function TableAppender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result
66
IS
77
BEGIN
88
self.m_name := name;

src/Appender/TableAppender.type.pls

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ create or replace
22
TYPE TableAppender
33
under Appender
44
(
5-
--constructor function Appender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result,
6-
constructor function TableAppender(name VARCHAR2, filter varchar2, layout Layout,ignoreExceptions boolean ) return self as result
5+
constructor function TableAppender(name VARCHAR2, filter Filter, layout Layout,ignoreExceptions boolean ) return self as result
76

87
,overriding member procedure append(event LogEvent)
98

src/Core/CompositeFilter.type.pls

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
create or replace TYPE CompositeFilter
2+
under Filter
3+
(
4+
m_filters FilterArray
5+
6+
,constructor function Compositefilter(filters FilterArray) return self as result
7+
8+
9+
,overriding member function dofilter(logger Logger, lvl LogLevel, marker Marker, msg log4_object, t GenericException) return Result
10+
,overriding member function dofilter(logger Logger, lvl LogLevel, marker Marker, msg Message, t GenericException) return Result
11+
,overriding member function dofilter(event LogEvent) return Result
12+
13+
, member function addFilter(filter Filter) return CompositeFilter
14+
, member function removeFilter(filter Filter) return CompositeFilter
15+
16+
, member function hasFilters return boolean
17+
18+
) not final ;
19+
/
20+
show errors
21+
22+
create or replace TYPE BODY CompositeFilter
23+
AS
24+
25+
constructor function Compositefilter(filters FilterArray) return self as result
26+
IS
27+
BEGIN
28+
onMatch := Result.NEUTRAL;
29+
onMismatch := Result.NEUTRAL;
30+
m_filters := filters;
31+
return;
32+
END;
33+
34+
member function addFilter(filter Filter) return CompositeFilter
35+
IS
36+
BEGIN
37+
--m_filters.extend();
38+
--m_filters(m_filters.LAST) := filter;
39+
return self;
40+
END;
41+
42+
member function removeFilter(filter Filter) return CompositeFilter
43+
IS
44+
BEGIN
45+
for x in m_filters.FIRST .. m_filters.LAST LOOP
46+
if m_filters.exists(x) and m_filters(x) = filter then
47+
--m_filters.delete(x);
48+
exit;
49+
end if;
50+
end loop;
51+
return self;
52+
END;
53+
member function hasFilters return boolean
54+
is
55+
begin
56+
return m_filters.count >0;
57+
end;
58+
59+
overriding member function dofilter(logger Logger, lvl LogLevel, marker Marker, msg log4_object, t GenericException) return Result
60+
IS
61+
retval Result := Result.NEUTRAL;
62+
BEGIN
63+
for x in m_filters.FIRST .. m_filters.LAST LOOP
64+
if m_filters.exists(x) THEN
65+
retval := m_filters(x).dofilter(logger, lvl, marker, msg, t);
66+
IF retval != Result.NEUTRAL THEN
67+
return retval;
68+
END IF;
69+
end if;
70+
END LOOP;
71+
return retval;
72+
end;
73+
overriding member function dofilter(logger Logger, lvl LogLevel, marker Marker, msg Message, t GenericException) return Result
74+
IS
75+
retval Result := Result.NEUTRAL;
76+
BEGIN
77+
for x in m_filters.FIRST .. m_filters.LAST LOOP
78+
retval := m_filters(x).dofilter(logger, lvl, marker, msg, t);
79+
IF retval != Result.NEUTRAL THEN
80+
return retval;
81+
END IF;
82+
END LOOP;
83+
return retval;
84+
end;
85+
overriding member function dofilter(event LogEvent) return Result
86+
IS
87+
retval Result := Result.NEUTRAL;
88+
BEGIN
89+
for x in m_filters.FIRST .. m_filters.LAST LOOP
90+
retval := m_filters(x).dofilter(event);
91+
IF retval != Result.NEUTRAL THEN
92+
return retval;
93+
END IF;
94+
END LOOP;
95+
return retval;
96+
end;
97+
98+
END;
99+
/
100+
show errors

0 commit comments

Comments
 (0)