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.Layout;
25 import org.apache.logging.log4j.core.LogEvent;
26 import org.apache.logging.log4j.core.filter.AbstractFilterable;
27 import org.apache.logging.log4j.core.util.Integers;
28
29
30
31
32
33 public abstract class AbstractAppender extends AbstractFilterable implements Appender {
34
35 private static final long serialVersionUID = 1L;
36
37 private final String name;
38 private final boolean ignoreExceptions;
39 private final Layout<? extends Serializable> layout;
40 private ErrorHandler handler = new DefaultErrorHandler(this);
41
42
43
44
45
46
47
48
49 protected AbstractAppender(final String name, final Filter filter, final Layout<? extends Serializable> layout) {
50 this(name, filter, layout, true);
51 }
52
53
54
55
56
57
58
59
60
61
62 protected AbstractAppender(final String name, final Filter filter, final Layout<? extends Serializable> layout,
63 final boolean ignoreExceptions) {
64 super(filter);
65 this.name = name;
66 this.layout = layout;
67 this.ignoreExceptions = ignoreExceptions;
68 }
69
70 public static int parseInt(final String s, final int defaultValue) {
71 try {
72 return Integers.parseInt(s, defaultValue);
73 } catch (final NumberFormatException e) {
74 LOGGER.error("Could not parse \"{}\" as an integer, using default value {}: {}", s, defaultValue, e);
75 return defaultValue;
76 }
77 }
78
79
80
81
82
83
84 public void error(final String msg) {
85 handler.error(msg);
86 }
87
88
89
90
91
92
93
94
95
96 public void error(final String msg, final LogEvent event, final Throwable t) {
97 handler.error(msg, event, t);
98 }
99
100
101
102
103
104
105
106 public void error(final String msg, final Throwable t) {
107 handler.error(msg, t);
108 }
109
110
111
112
113
114
115 @Override
116 public ErrorHandler getHandler() {
117 return handler;
118 }
119
120
121
122
123
124
125 @Override
126 public Layout<? extends Serializable> getLayout() {
127 return layout;
128 }
129
130
131
132
133
134
135 @Override
136 public String getName() {
137 return name;
138 }
139
140
141
142
143
144
145
146 @Override
147 public boolean ignoreExceptions() {
148 return ignoreExceptions;
149 }
150
151
152
153
154
155
156 @Override
157 public void setHandler(final ErrorHandler handler) {
158 if (handler == null) {
159 LOGGER.error("The handler cannot be set to null");
160 }
161 if (isStarted()) {
162 LOGGER.error("The handler cannot be changed once the appender is started");
163 return;
164 }
165 this.handler = handler;
166 }
167
168 @Override
169 public String toString() {
170 return name;
171 }
172
173 }