1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.log4j;
18
19 import org.apache.log4j.spi.ErrorHandler;
20 import org.apache.log4j.spi.Filter;
21 import org.apache.log4j.spi.LoggingEvent;
22 import org.apache.log4j.spi.OptionHandler;
23
24
25
26
27 public abstract class AppenderSkeleton implements Appender, OptionHandler {
28
29 protected Layout layout;
30
31 protected String name;
32
33 protected Priority threshold;
34
35 protected ErrorHandler errorHandler = new NoOpErrorHandler();
36
37 protected Filter headFilter;
38
39 protected Filter tailFilter;
40
41 protected boolean closed = false;
42
43
44
45
46 public AppenderSkeleton() {
47 super();
48 }
49
50 protected AppenderSkeleton(final boolean isActive) {
51 super();
52 }
53
54 public void activateOptions() {
55 }
56
57 public void addFilter(Filter newFilter) {
58 if(headFilter == null) {
59 headFilter = tailFilter = newFilter;
60 } else {
61 tailFilter.setNext(newFilter);
62 tailFilter = newFilter;
63 }
64 }
65
66 protected abstract void append(LoggingEvent event);
67
68 public void clearFilters() {
69 headFilter = tailFilter = null;
70 }
71
72 public void finalize() {
73 }
74
75 public ErrorHandler getErrorHandler() {
76 return this.errorHandler;
77 }
78
79 public Filter getFilter() {
80 return headFilter;
81 }
82
83 public final Filter getFirstFilter() {
84 return headFilter;
85 }
86
87 public Layout getLayout() {
88 return layout;
89 }
90
91 public final String getName() {
92 return this.name;
93 }
94
95 public Priority getThreshold() {
96 return threshold;
97 }
98
99 public boolean isAsSevereAsThreshold(Priority priority) {
100 return ((threshold == null) || priority.isGreaterOrEqual(threshold));
101 }
102
103
104
105
106
107 public void doAppend(LoggingEvent event) {
108 }
109
110
111
112
113
114
115 public synchronized void setErrorHandler(ErrorHandler eh) {
116 if (eh != null) {
117 this.errorHandler = eh;
118 }
119 }
120
121 public void setLayout(Layout layout) {
122 this.layout = layout;
123 }
124
125 public void setName(String name) {
126 this.name = name;
127 }
128
129 public void setThreshold(Priority threshold) {
130 this.threshold = threshold;
131 }
132
133 public static class NoOpErrorHandler implements ErrorHandler {
134 @Override
135 public void setLogger(Logger logger) {
136
137 }
138
139 @Override
140 public void error(String message, Exception e, int errorCode) {
141
142 }
143
144 @Override
145 public void error(String message) {
146
147 }
148
149 @Override
150 public void error(String message, Exception e, int errorCode, LoggingEvent event) {
151
152 }
153
154 @Override
155 public void setAppender(Appender appender) {
156
157 }
158
159 @Override
160 public void setBackupAppender(Appender appender) {
161
162 }
163 }
164 }