View Javadoc

1   /*
2    *   @(#) $Id: SessionLog.java 357871 2005-12-20 01:56:40Z trustin $
3    *
4    *   Copyright 2004 The Apache Software Foundation
5    *
6    *   Licensed under the Apache License, Version 2.0 (the "License");
7    *   you may not use this file except in compliance with the License.
8    *   You may obtain a copy of the License at
9    *
10   *       http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *   Unless required by applicable law or agreed to in writing, software
13   *   distributed under the License is distributed on an "AS IS" BASIS,
14   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   *   See the License for the specific language governing permissions and
16   *   limitations under the License.
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 }