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 @Override
200 public void exceptionCaught(NextFilter nextFilter, IoSession session, Throwable cause) throws Exception {
201 log(exceptionCaughtLevel, "EXCEPTION :", cause);
202 nextFilter.exceptionCaught(session, cause);
203 }
204
205 @Override
206 public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
207 log(messageReceivedLevel, "RECEIVED: {}", message);
208 nextFilter.messageReceived(session, message);
209 }
210
211 @Override
212 public void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {
213 log(messageSentLevel, "SENT: {}", writeRequest.getMessage());
214 nextFilter.messageSent(session, writeRequest);
215 }
216
217 @Override
218 public void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception {
219 log(sessionCreatedLevel, "CREATED");
220 nextFilter.sessionCreated(session);
221 }
222
223 @Override
224 public void sessionOpened(NextFilter nextFilter, IoSession session) throws Exception {
225 log(sessionOpenedLevel, "OPENED");
226 nextFilter.sessionOpened(session);
227 }
228
229 @Override
230 public void sessionIdle(NextFilter nextFilter, IoSession session, IdleStatus status) throws Exception {
231 log(sessionIdleLevel, "IDLE");
232 nextFilter.sessionIdle(session, status);
233 }
234
235 @Override
236 public void sessionClosed(NextFilter nextFilter, IoSession session) throws Exception {
237 log(sessionClosedLevel, "CLOSED");
238 nextFilter.sessionClosed(session);
239 }
240
241
242
243
244
245
246 public void setExceptionCaughtLogLevel(LogLevel level) {
247 exceptionCaughtLevel = level;
248 }
249
250
251
252
253
254
255 public LogLevel getExceptionCaughtLogLevel() {
256 return exceptionCaughtLevel;
257 }
258
259
260
261
262
263
264 public void setMessageReceivedLogLevel(LogLevel level) {
265 messageReceivedLevel = level;
266 }
267
268
269
270
271
272
273 public LogLevel getMessageReceivedLogLevel() {
274 return messageReceivedLevel;
275 }
276
277
278
279
280
281
282 public void setMessageSentLogLevel(LogLevel level) {
283 messageSentLevel = level;
284 }
285
286
287
288
289
290
291 public LogLevel getMessageSentLogLevel() {
292 return messageSentLevel;
293 }
294
295
296
297
298
299
300 public void setSessionCreatedLogLevel(LogLevel level) {
301 sessionCreatedLevel = level;
302 }
303
304
305
306
307
308
309 public LogLevel getSessionCreatedLogLevel() {
310 return sessionCreatedLevel;
311 }
312
313
314
315
316
317
318 public void setSessionOpenedLogLevel(LogLevel level) {
319 sessionOpenedLevel = level;
320 }
321
322
323
324
325
326
327 public LogLevel getSessionOpenedLogLevel() {
328 return sessionOpenedLevel;
329 }
330
331
332
333
334
335
336 public void setSessionIdleLogLevel(LogLevel level) {
337 sessionIdleLevel = level;
338 }
339
340
341
342
343
344
345 public LogLevel getSessionIdleLogLevel() {
346 return sessionIdleLevel;
347 }
348
349
350
351
352
353
354 public void setSessionClosedLogLevel(LogLevel level) {
355 sessionClosedLevel = level;
356 }
357
358
359
360
361
362
363 public LogLevel getSessionClosedLogLevel() {
364 return sessionClosedLevel;
365 }
366 }