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 java.util.logging.Level;
22 import java.util.logging.Logger;
23
24 import org.apache.mina.common.Session;
25 import org.apache.mina.io.IoSession;
26 import org.apache.mina.protocol.ProtocolSession;
27
28 /***
29 * Call {@link #getLogger(Session)}, {@link #log(Level,Session, String)}, and
30 * {@link #log(Level,Session, String, Throwable)} to log protocol-specific messages.
31 * <p>
32 * Set {@link #PREFIX} and {@link #LOGGER} session attributes
33 * to override prefix string, logger, and log level.
34 *
35 * @author The Apache Directory Project (dev@directory.apache.org)
36 * @author Trustin Lee (trustin@apache.org)
37 * @version $Rev: 210062 $, $Date: 2005-07-11 12:52:38 +0900 $
38 *
39 */
40 public class SessionLog {
41 /***
42 * Session attribute key: prefix string
43 */
44 public static final String PREFIX = SessionLog.class.getName() + ".prefix";
45
46 /***
47 * Session attribute key: {@link Logger}
48 */
49 public static final String LOGGER = SessionLog.class.getName() + ".logger";
50
51 public static Logger getLogger( Session session )
52 {
53
54 Logger log = (Logger) session.getAttribute( LOGGER );
55 if( log == null )
56 {
57 log = Logger.getLogger( getClassName( session ) );
58 String prefix = ( String ) session.getAttribute( PREFIX );
59 if( prefix == null )
60 {
61 prefix = "[" + session.getRemoteAddress() + "] ";
62 session.setAttribute( PREFIX, prefix );
63 }
64
65 session.setAttribute( LOGGER, log );
66 }
67
68 return log;
69 }
70
71 private static String getClassName( Session session )
72 {
73 if( session instanceof IoSession )
74 return ( ( IoSession ) session ).getHandler().getClass().getName();
75 else
76 return ( ( ProtocolSession ) session ).getHandler().getClass().getName();
77 }
78
79 public static void log( Level level, Session session, String message )
80 {
81 Logger log = getLogger( session );
82 if( log.isLoggable( level ) )
83 {
84 log.log( level, String.valueOf( session.getAttribute( PREFIX ) ) + message );
85 }
86 }
87
88 public static void log( Level level, Session session, String message, Throwable cause )
89 {
90 Logger log = getLogger( session );
91 if( log.isLoggable( level ) )
92 {
93 log.log( level, String.valueOf( session.getAttribute( PREFIX ) ) + message, cause );
94 }
95 }
96 }