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