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 public class LoggingFilter extends IoFilterAdapter {
45
46 private final String name;
47
48
49 private final Logger logger;
50
51
52 private LogLevel exceptionCaughtLevel = LogLevel.WARN;
53
54
55 private LogLevel messageSentLevel = LogLevel.INFO;
56
57
58 private LogLevel messageReceivedLevel = LogLevel.INFO;
59
60
61 private LogLevel sessionCreatedLevel = LogLevel.INFO;
62
63
64 private LogLevel sessionOpenedLevel = LogLevel.INFO;
65
66
67 private LogLevel sessionIdleLevel = LogLevel.INFO;
68
69
70 private LogLevel sessionClosedLevel = LogLevel.INFO;
71
72
73
74
75 public LoggingFilter() {
76 this(LoggingFilter.class.getName());
77 }
78
79
80
81
82
83
84 public LoggingFilter(Class<?> clazz) {
85 this(clazz.getName());
86 }
87
88
89
90
91
92
93 public LoggingFilter(String name) {
94 if (name == null) {
95 this.name = LoggingFilter.class.getName();
96 } else {
97 this.name = name;
98 }
99
100 logger = LoggerFactory.getLogger(this.name);
101 }
102
103
104
105
106 public String getName() {
107 return name;
108 }
109
110
111
112
113
114
115
116
117
118 private void log(LogLevel eventLevel, String message, Throwable cause) {
119 switch (eventLevel) {
120 case TRACE:
121 logger.trace(message, cause);
122 return;
123 case DEBUG:
124 logger.debug(message, cause);
125 return;
126 case INFO:
127 logger.info(message, cause);
128 return;
129 case WARN:
130 logger.warn(message, cause);
131 return;
132 case ERROR:
133 logger.error(message, cause);
134 return;
135 default:
136 return;
137 }
138 }
139
140
141
142
143
144
145
146
147
148 private void log(LogLevel eventLevel, String message, Object param) {
149 switch (eventLevel) {
150 case TRACE:
151 logger.trace(message, param);
152 return;
153 case DEBUG:
154 logger.debug(message, param);
155 return;
156 case INFO:
157 logger.info(message, param);
158 return;
159 case WARN:
160 logger.warn(message, param);
161 return;
162 case ERROR:
163 logger.error(message, param);
164 return;
165 default:
166 return;
167 }
168 }
169
170
171
172
173
174
175
176
177 private void log(LogLevel eventLevel, String message) {
178 switch (eventLevel) {
179 case TRACE:
180 logger.trace(message);
181 return;
182 case DEBUG:
183 logger.debug(message);
184 return;
185 case INFO:
186 logger.info(message);
187 return;
188 case WARN:
189 logger.warn(message);
190 return;
191 case ERROR:
192 logger.error(message);
193 return;
194 default:
195 return;
196 }
197 }
198
199
200
201
202 @Override
203 public void exceptionCaught(NextFilter nextFilter, IoSession session, Throwable cause) throws Exception {
204 log(exceptionCaughtLevel, "EXCEPTION :", cause);
205 nextFilter.exceptionCaught(session, cause);
206 }
207
208
209
210
211 @Override
212 public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
213
214
215 log(messageReceivedLevel, "RECEIVED: {}", message);
216 nextFilter.messageReceived(session, message);
217 }
218
219
220
221
222 @Override
223 public void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {
224
225
226 log(messageSentLevel, "SENT: {}", writeRequest.getOriginalRequest().getMessage());
227 nextFilter.messageSent(session, writeRequest);
228 }
229
230
231
232
233 @Override
234 public void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception {
235 log(sessionCreatedLevel, "CREATED");
236 nextFilter.sessionCreated(session);
237 }
238
239
240
241
242 @Override
243 public void sessionOpened(NextFilter nextFilter, IoSession session) throws Exception {
244 log(sessionOpenedLevel, "OPENED");
245 nextFilter.sessionOpened(session);
246 }
247
248
249
250
251 @Override
252 public void sessionIdle(NextFilter nextFilter, IoSession session, IdleStatus status) throws Exception {
253 log(sessionIdleLevel, "IDLE");
254 nextFilter.sessionIdle(session, status);
255 }
256
257
258
259
260 @Override
261 public void sessionClosed(NextFilter nextFilter, IoSession session) throws Exception {
262 log(sessionClosedLevel, "CLOSED");
263 nextFilter.sessionClosed(session);
264 }
265
266
267
268
269
270
271 public void setExceptionCaughtLogLevel(LogLevel level) {
272 exceptionCaughtLevel = level;
273 }
274
275
276
277
278
279
280 public LogLevel getExceptionCaughtLogLevel() {
281 return exceptionCaughtLevel;
282 }
283
284
285
286
287
288
289 public void setMessageReceivedLogLevel(LogLevel level) {
290 messageReceivedLevel = level;
291 }
292
293
294
295
296
297
298 public LogLevel getMessageReceivedLogLevel() {
299 return messageReceivedLevel;
300 }
301
302
303
304
305
306
307 public void setMessageSentLogLevel(LogLevel level) {
308 messageSentLevel = level;
309 }
310
311
312
313
314
315
316 public LogLevel getMessageSentLogLevel() {
317 return messageSentLevel;
318 }
319
320
321
322
323
324
325 public void setSessionCreatedLogLevel(LogLevel level) {
326 sessionCreatedLevel = level;
327 }
328
329
330
331
332
333
334 public LogLevel getSessionCreatedLogLevel() {
335 return sessionCreatedLevel;
336 }
337
338
339
340
341
342
343 public void setSessionOpenedLogLevel(LogLevel level) {
344 sessionOpenedLevel = level;
345 }
346
347
348
349
350
351
352 public LogLevel getSessionOpenedLogLevel() {
353 return sessionOpenedLevel;
354 }
355
356
357
358
359
360
361 public void setSessionIdleLogLevel(LogLevel level) {
362 sessionIdleLevel = level;
363 }
364
365
366
367
368
369
370 public LogLevel getSessionIdleLogLevel() {
371 return sessionIdleLevel;
372 }
373
374
375
376
377
378
379 public void setSessionClosedLogLevel(LogLevel level) {
380 sessionClosedLevel = level;
381 }
382
383
384
385
386
387
388 public LogLevel getSessionClosedLogLevel() {
389 return sessionClosedLevel;
390 }
391 }