1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.mina.util;
20
21 import org.apache.mina.common.Session;
22 import org.apache.mina.io.IoSession;
23 import org.apache.mina.protocol.ProtocolSession;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27 /***
28 * Provides utility methods to log protocol-specific messages.
29 * <p>
30 * Set {@link #PREFIX} and {@link #LOGGER} session attributes
31 * to override prefix string and logger.
32 *
33 * @author The Apache Directory Project (dev@directory.apache.org)
34 * @version $Rev: 357871 $, $Date: 2005-12-20 10:56:40 +0900 (Tue, 20 Dec 2005) $
35 *
36 */
37 public class SessionLog {
38 /***
39 * Session attribute key: prefix string
40 */
41 public static final String PREFIX = SessionLog.class.getName() + ".prefix";
42
43 /***
44 * Session attribute key: {@link Logger}
45 */
46 public static final String LOGGER = SessionLog.class.getName() + ".logger";
47
48 public static Logger getLogger( Session session )
49 {
50 Logger log = (Logger) session.getAttribute( LOGGER );
51 if( log == null )
52 {
53 log = LoggerFactory.getLogger( getClass( session ) );
54 String prefix = ( String ) session.getAttribute( PREFIX );
55 if( prefix == null )
56 {
57 prefix = "[" + session.getRemoteAddress() + "] ";
58 session.setAttribute( PREFIX, prefix );
59 }
60
61 session.setAttribute( LOGGER, log );
62 }
63
64 return log;
65 }
66
67 private static Class getClass( Session session )
68 {
69 if( session instanceof IoSession )
70 return ( ( IoSession ) session ).getHandler().getClass();
71 else
72 return ( ( ProtocolSession ) session ).getHandler().getClass();
73 }
74
75 public static void debug( Session session, String message )
76 {
77 Logger log = getLogger( session );
78 if( log.isDebugEnabled() )
79 {
80 log.debug( String.valueOf( session.getAttribute( PREFIX ) ) + message );
81 }
82 }
83
84 public static void debug( Session session, String message, Throwable cause )
85 {
86 Logger log = getLogger( session );
87 if( log.isDebugEnabled() )
88 {
89 log.debug( String.valueOf( session.getAttribute( PREFIX ) ) + message, cause );
90 }
91 }
92
93 public static void info( Session session, String message )
94 {
95 Logger log = getLogger( session );
96 if( log.isInfoEnabled() )
97 {
98 log.info( String.valueOf( session.getAttribute( PREFIX ) ) + message );
99 }
100 }
101
102 public static void info( Session session, String message, Throwable cause )
103 {
104 Logger log = getLogger( session );
105 if( log.isInfoEnabled() )
106 {
107 log.info( String.valueOf( session.getAttribute( PREFIX ) ) + message, cause );
108 }
109 }
110
111 public static void warn( Session session, String message )
112 {
113 Logger log = getLogger( session );
114 if( log.isWarnEnabled() )
115 {
116 log.warn( String.valueOf( session.getAttribute( PREFIX ) ) + message );
117 }
118 }
119
120 public static void warn( Session session, String message, Throwable cause )
121 {
122 Logger log = getLogger( session );
123 if( log.isWarnEnabled() )
124 {
125 log.warn( String.valueOf( session.getAttribute( PREFIX ) ) + message, cause );
126 }
127 }
128
129 public static void error( Session session, String message )
130 {
131 Logger log = getLogger( session );
132 if( log.isErrorEnabled() )
133 {
134 log.error( String.valueOf( session.getAttribute( PREFIX ) ) + message );
135 }
136 }
137
138 public static void error( Session session, String message, Throwable cause )
139 {
140 Logger log = getLogger( session );
141 if( log.isErrorEnabled() )
142 {
143 log.error( String.valueOf( session.getAttribute( PREFIX ) ) + message, cause );
144 }
145 }
146 }