Author: trustin
Date: Sun May  1 23:45:06 2005
New Revision: 165588

URL: http://svn.apache.org/viewcvs?rev=165588&view=rev
Log:
Forgot to check in SessionLog.

Added:
    directory/network/trunk/src/java/org/apache/mina/util/SessionLog.java   
(with props)

Added: directory/network/trunk/src/java/org/apache/mina/util/SessionLog.java
URL: 
http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/util/SessionLog.java?rev=165588&view=auto
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/util/SessionLog.java 
(added)
+++ directory/network/trunk/src/java/org/apache/mina/util/SessionLog.java Sun 
May  1 23:45:06 2005
@@ -0,0 +1,93 @@
+package org.apache.mina.util;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.mina.common.Session;
+import org.apache.mina.io.IoSession;
+import org.apache.mina.io.filter.LoggingFilter;
+import org.apache.mina.protocol.ProtocolSession;
+
+/**
+ * Call [EMAIL PROTECTED] #getLogger(Session)}, [EMAIL PROTECTED] 
#log(Session, String)}, and
+ * [EMAIL PROTECTED] #log(Session, String, Throwable)} to log 
protocol-specific messages.
+ * <p>
+ * Set [EMAIL PROTECTED] #PREFIX}, [EMAIL PROTECTED] #LOGGER}, [EMAIL 
PROTECTED] #LEVEL} session attributes
+ * to override prefix string, logger, and log level.
+ *
+ * @author The Apache Directory Project ([email protected])
+ * @author Trustin Lee ([EMAIL PROTECTED])
+ * @version $Rev$, $Date$
+ *
+ */
+public class SessionLog {
+    /**
+     * Session attribute key: prefix string
+     */
+    public static final String PREFIX = LoggingFilter.class.getName() + 
".prefix";
+
+    /**
+     * Session attribute key: [EMAIL PROTECTED] Logger}
+     */
+    public static final String LOGGER = LoggingFilter.class.getName() + 
".logger";
+    
+    /**
+     * Session attribute key: [EMAIL PROTECTED] Level}
+     */
+    public static final String LEVEL = LoggingFilter.class.getName() + 
".level";
+
+    public static Logger getLogger( Session session )
+    {
+        
+        Logger log = (Logger) session.getAttribute( LOGGER );
+        if( log == null )
+        {
+            log = Logger.getLogger( getClassName( session ) );
+            String prefix = ( String ) session.getAttribute( PREFIX );
+            if( prefix == null )
+            {
+                prefix = "[" + session.getRemoteAddress() + "] ";
+                session.setAttribute( PREFIX, prefix );
+            }
+            
+            Level level = ( Level ) session.getAttribute( LEVEL );
+            if( level == null )
+            {
+                level = Level.INFO;
+                session.setAttribute( LEVEL, level );
+            }
+                
+            session.setAttribute( LOGGER, log );
+        }
+        
+        return log;
+    }
+    
+    private static String getClassName( Session session )
+    {
+        if( session instanceof IoSession )
+            return ( ( IoSession ) session ).getHandler().getClass().getName();
+        else
+            return ( ( ProtocolSession ) session 
).getHandler().getClass().getName();
+    }
+
+    public static void log( Session session, String message )
+    {
+        Logger log = getLogger( session );
+        Level level = ( Level ) session.getAttribute( LEVEL );
+        if( log.isLoggable( level ) )
+        {
+            log.log( level, message );
+        }
+    }
+
+    public static void log( Session session, String message, Throwable cause )
+    {
+        Logger log = getLogger( session );
+        Level level = ( Level ) session.getAttribute( LEVEL );
+        if( log.isLoggable( level ) )
+        {
+            log.log( level, message, cause );
+        }
+    }
+}

Propchange: 
directory/network/trunk/src/java/org/apache/mina/util/SessionLog.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision


Reply via email to