1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.appender;
18
19 import java.io.Serializable;
20
21 import org.apache.logging.log4j.core.Appender;
22 import org.apache.logging.log4j.core.ErrorHandler;
23 import org.apache.logging.log4j.core.Filter;
24 import org.apache.logging.log4j.core.LifeCycle;
25 import org.apache.logging.log4j.core.LogEvent;
26 import org.apache.logging.log4j.core.Layout;
27 import org.apache.logging.log4j.core.filter.AbstractFilterable;
28 import org.apache.logging.log4j.status.StatusLogger;
29 import org.apache.logging.log4j.Logger;
30
31
32
33
34
35
36
37 public abstract class AbstractAppender<T extends Serializable> extends AbstractFilterable
38 implements Appender<T>, LifeCycle {
39
40
41
42 protected static final Logger LOGGER = StatusLogger.getLogger();
43
44
45
46
47 private boolean started = false;
48
49 private final Layout<T> layout;
50
51 private final String name;
52
53 private final boolean handleException;
54
55 private ErrorHandler handler = new DefaultErrorHandler(this);
56
57
58
59
60
61
62
63 protected AbstractAppender(final String name, final Filter filter, final Layout<T> layout) {
64 this(name, filter, layout, true);
65 }
66
67
68
69
70
71
72
73
74
75 protected AbstractAppender(final String name, final Filter filter, final Layout<T> layout,
76 final boolean handleException) {
77 super(filter);
78 this.name = name;
79 this.layout = layout;
80 this.handleException = handleException;
81 }
82
83
84
85
86
87 public ErrorHandler getHandler() {
88 return handler;
89 }
90
91
92
93
94
95 public void setHandler(final ErrorHandler handler) {
96 if (handler == null) {
97 LOGGER.error("The handler cannot be set to null");
98 }
99 if (isStarted()) {
100 LOGGER.error("The handler cannot be changed once the appender is started");
101 return;
102 }
103 this.handler = handler;
104 }
105
106
107
108
109 public void close() {
110
111 }
112
113
114
115
116
117 public String getName() {
118 return name;
119 }
120
121
122
123
124
125 public Layout<T> getLayout() {
126 return layout;
127 }
128
129
130
131
132
133
134 public boolean isExceptionSuppressed() {
135 return handleException;
136 }
137
138
139
140
141 public void start() {
142 startFilter();
143 this.started = true;
144 }
145
146
147
148
149 public void stop() {
150 this.started = false;
151 stopFilter();
152 }
153
154
155
156
157
158 public boolean isStarted() {
159 return started;
160 }
161
162 @Override
163 public String toString() {
164 return name;
165 }
166
167
168
169
170
171 public void error(final String msg) {
172 handler.error(msg);
173 }
174
175
176
177
178
179
180 public void error(final String msg, final Throwable t) {
181 handler.error(msg, t);
182 }
183
184
185
186
187
188
189
190 public void error(final String msg, final LogEvent event, final Throwable t) {
191 handler.error(msg, event, t);
192 }
193
194 }