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