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