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