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