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 : logger.trace(message, cause); return;
121 case DEBUG : logger.debug(message, cause); return;
122 case INFO : logger.info(message, cause); return;
123 case WARN : logger.warn(message, cause); return;
124 case ERROR : logger.error(message, cause); return;
125 default : return;
126 }
127 }
128
129
130
131
132
133
134
135
136
137 private void log(LogLevel eventLevel, String message, Object param) {
138 switch (eventLevel) {
139 case TRACE : logger.trace(message, param); return;
140 case DEBUG : logger.debug(message, param); return;
141 case INFO : logger.info(message, param); return;
142 case WARN : logger.warn(message, param); return;
143 case ERROR : logger.error(message, param); return;
144 default : return;
145 }
146 }
147
148
149
150
151
152
153
154
155 private void log(LogLevel eventLevel, String message) {
156 switch (eventLevel) {
157 case TRACE : logger.trace(message); return;
158 case DEBUG : logger.debug(message); return;
159 case INFO : logger.info(message); return;
160 case WARN : logger.warn(message); return;
161 case ERROR : logger.error(message); return;
162 default : return;
163 }
164 }
165
166 @Override
167 public void exceptionCaught(NextFilter nextFilter, IoSession session,
168 Throwable cause) throws Exception {
169 log(exceptionCaughtLevel, "EXCEPTION :", cause);
170 nextFilter.exceptionCaught(session, cause);
171 }
172
173 @Override
174 public void messageReceived(NextFilter nextFilter, IoSession session,
175 Object message) throws Exception {
176 log(messageReceivedLevel, "RECEIVED: {}", message );
177 nextFilter.messageReceived(session, message);
178 }
179
180 @Override
181 public void messageSent(NextFilter nextFilter, IoSession session,
182 WriteRequest writeRequest) throws Exception {
183 log(messageSentLevel, "SENT: {}", writeRequest.getMessage() );
184 nextFilter.messageSent(session, writeRequest);
185 }
186
187 @Override
188 public void sessionCreated(NextFilter nextFilter, IoSession session)
189 throws Exception {
190 log(sessionCreatedLevel, "CREATED");
191 nextFilter.sessionCreated(session);
192 }
193
194 @Override
195 public void sessionOpened(NextFilter nextFilter, IoSession session)
196 throws Exception {
197 log(sessionOpenedLevel, "OPENED");
198 nextFilter.sessionOpened(session);
199 }
200
201 @Override
202 public void sessionIdle(NextFilter nextFilter, IoSession session,
203 IdleStatus status) throws Exception {
204 log(sessionIdleLevel, "IDLE");
205 nextFilter.sessionIdle(session, status);
206 }
207
208 @Override
209 public void sessionClosed(NextFilter nextFilter, IoSession session) throws Exception {
210 log(sessionClosedLevel, "CLOSED");
211 nextFilter.sessionClosed(session);
212 }
213
214
215
216
217
218
219 public void setExceptionCaughtLogLevel(LogLevel level) {
220 exceptionCaughtLevel = level;
221 }
222
223
224
225
226
227
228 public LogLevel getExceptionCaughtLogLevel() {
229 return exceptionCaughtLevel;
230 }
231
232
233
234
235
236
237 public void setMessageReceivedLogLevel(LogLevel level) {
238 messageReceivedLevel = level;
239 }
240
241
242
243
244
245
246 public LogLevel getMessageReceivedLogLevel() {
247 return messageReceivedLevel;
248 }
249
250
251
252
253
254
255 public void setMessageSentLogLevel(LogLevel level) {
256 messageSentLevel = level;
257 }
258
259
260
261
262
263
264 public LogLevel getMessageSentLogLevel() {
265 return messageSentLevel;
266 }
267
268
269
270
271
272
273 public void setSessionCreatedLogLevel(LogLevel level) {
274 sessionCreatedLevel = level;
275 }
276
277
278
279
280
281
282 public LogLevel getSessionCreatedLogLevel() {
283 return sessionCreatedLevel;
284 }
285
286
287
288
289
290
291 public void setSessionOpenedLogLevel(LogLevel level) {
292 sessionOpenedLevel = level;
293 }
294
295
296
297
298
299
300 public LogLevel getSessionOpenedLogLevel() {
301 return sessionOpenedLevel;
302 }
303
304
305
306
307
308
309 public void setSessionIdleLogLevel(LogLevel level) {
310 sessionIdleLevel = level;
311 }
312
313
314
315
316
317
318 public LogLevel getSessionIdleLogLevel() {
319 return sessionIdleLevel;
320 }
321
322
323
324
325
326
327 public void setSessionClosedLogLevel(LogLevel level) {
328 sessionClosedLevel = level;
329 }
330
331
332
333
334
335
336 public LogLevel getSessionClosedLogLevel() {
337 return sessionClosedLevel;
338 }
339 }