1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.filter.logging;
21
22 import org.apache.mina.core.filterchain.IoFilter;
23 import org.apache.mina.core.filterchain.IoFilterAdapter;
24 import org.apache.mina.core.session.IdleStatus;
25 import org.apache.mina.core.session.IoEventType;
26 import org.apache.mina.core.session.IoSession;
27 import org.apache.mina.core.write.WriteRequest;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 public class LoggingFilter extends IoFilterAdapter {
46
47 private final String name;
48
49
50 private final Logger logger;
51
52
53 private LogLevel exceptionCaughtLevel = LogLevel.WARN;
54
55
56 private LogLevel messageSentLevel = LogLevel.INFO;
57
58
59 private LogLevel messageReceivedLevel = LogLevel.INFO;
60
61
62 private LogLevel sessionCreatedLevel = LogLevel.INFO;
63
64
65 private LogLevel sessionOpenedLevel = LogLevel.INFO;
66
67
68 private LogLevel sessionIdleLevel = LogLevel.INFO;
69
70
71 private LogLevel sessionClosedLevel = LogLevel.INFO;
72
73
74
75
76 public LoggingFilter() {
77 this(LoggingFilter.class.getName());
78 }
79
80
81
82
83
84
85 public LoggingFilter(Class<?> clazz) {
86 this(clazz.getName());
87 }
88
89
90
91
92
93
94 public LoggingFilter(String name) {
95 if (name == null) {
96 this.name = LoggingFilter.class.getName();
97 } else {
98 this.name = name;
99 }
100
101 logger = LoggerFactory.getLogger(name);
102 }
103
104
105
106
107 public String getName() {
108 return name;
109 }
110
111
112
113
114
115
116
117
118
119 private void log(LogLevel eventLevel, String message, Throwable cause) {
120 if (eventLevel == LogLevel.TRACE) {
121 logger.trace(message, cause);
122 } else if (eventLevel.getLevel() > LogLevel.INFO.getLevel()) {
123 logger.info(message, cause);
124 } else if (eventLevel.getLevel() > LogLevel.WARN.getLevel()) {
125 logger.warn(message, cause);
126 } else if (eventLevel.getLevel() > LogLevel.ERROR.getLevel()) {
127 logger.error(message, cause);
128 }
129 }
130
131
132
133
134
135
136
137
138
139 private void log(LogLevel eventLevel, String message, Object param) {
140 if (eventLevel == LogLevel.TRACE) {
141 logger.trace(message, param);
142 } else if (eventLevel.getLevel() > LogLevel.INFO.getLevel()) {
143 logger.info(message, param);
144 } else if (eventLevel.getLevel() > LogLevel.WARN.getLevel()) {
145 logger.warn(message, param);
146 } else if (eventLevel.getLevel() > LogLevel.ERROR.getLevel()) {
147 logger.error(message, param);
148 }
149 }
150
151
152
153
154
155
156
157
158 private void log(LogLevel eventLevel, String message) {
159 if (eventLevel == LogLevel.TRACE) {
160 logger.trace(message);
161 } else if (eventLevel.getLevel() > LogLevel.INFO.getLevel()) {
162 logger.info(message);
163 } else if (eventLevel.getLevel() > LogLevel.WARN.getLevel()) {
164 logger.warn(message);
165 } else if (eventLevel.getLevel() > LogLevel.ERROR.getLevel()) {
166 logger.error(message);
167 }
168 }
169
170 @Override
171 public void exceptionCaught(NextFilter nextFilter, IoSession session,
172 Throwable cause) throws Exception {
173 log(exceptionCaughtLevel, "EXCEPTION :", cause);
174 nextFilter.exceptionCaught(session, cause);
175 }
176
177 @Override
178 public void messageReceived(NextFilter nextFilter, IoSession session,
179 Object message) throws Exception {
180 log(messageReceivedLevel, "RECEIVED: {}", message );
181 nextFilter.messageReceived(session, message);
182 }
183
184 @Override
185 public void messageSent(NextFilter nextFilter, IoSession session,
186 WriteRequest writeRequest) throws Exception {
187 log(messageSentLevel, "SENT: {}", writeRequest.getMessage() );
188 nextFilter.messageSent(session, writeRequest);
189 }
190
191 @Override
192 public void sessionCreated(NextFilter nextFilter, IoSession session)
193 throws Exception {
194 log(sessionCreatedLevel, "CREATED");
195 nextFilter.sessionCreated(session);
196 }
197
198 @Override
199 public void sessionOpened(NextFilter nextFilter, IoSession session)
200 throws Exception {
201 log(sessionOpenedLevel, "OPENED");
202 nextFilter.sessionOpened(session);
203 }
204
205 @Override
206 public void sessionIdle(NextFilter nextFilter, IoSession session,
207 IdleStatus status) throws Exception {
208 log(sessionIdleLevel, "IDLE");
209 nextFilter.sessionIdle(session, status);
210 }
211
212 @Override
213 public void sessionClosed(NextFilter nextFilter, IoSession session) throws Exception {
214 log(sessionClosedLevel, "CLOSED");
215 nextFilter.sessionClosed(session);
216 }
217
218
219
220
221
222
223 public void setExceptionCaughtLoglevel(LogLevel level) {
224 exceptionCaughtLevel = level;
225 }
226
227
228
229
230
231
232 public LogLevel getExceptionCaughtLoglevel() {
233 return exceptionCaughtLevel;
234 }
235
236
237
238
239
240
241 public void setMessageReceivedLoglevel(LogLevel level) {
242 messageReceivedLevel = level;
243 }
244
245
246
247
248
249
250 public LogLevel getMessageReceivedLoglevel() {
251 return messageReceivedLevel;
252 }
253
254
255
256
257
258
259 public void setMessageSentLoglevel(LogLevel level) {
260 messageSentLevel = level;
261 }
262
263
264
265
266
267
268 public LogLevel getMessageSentLoglevel() {
269 return messageSentLevel;
270 }
271
272
273
274
275
276
277 public void setSessionCreatedLoglevel(LogLevel level) {
278 sessionCreatedLevel = level;
279 }
280
281
282
283
284
285
286 public LogLevel getSessionCreatedLoglevel() {
287 return sessionCreatedLevel;
288 }
289
290
291
292
293
294
295 public void setSessionOpenedLoglevel(LogLevel level) {
296 sessionOpenedLevel = level;
297 }
298
299
300
301
302
303
304 public LogLevel getSessionOpenedLoglevel() {
305 return sessionOpenedLevel;
306 }
307
308
309
310
311
312
313 public void setSessionIdleLoglevel(LogLevel level) {
314 sessionIdleLevel = level;
315 }
316
317
318
319
320
321
322 public LogLevel getSessionIdleLoglevel() {
323 return sessionIdleLevel;
324 }
325
326
327
328
329
330
331 public void setSessionClosedLoglevel(LogLevel level) {
332 sessionClosedLevel = level;
333 }
334
335
336
337
338
339
340 public LogLevel getSessionClosedLoglevel() {
341 return sessionClosedLevel;
342 }
343 }