Author: niklas
Date: Tue Nov 21 02:37:55 2006
New Revision: 477612
URL: http://svn.apache.org/viewvc?view=rev&rev=477612
Log:
* DIRMINA-314: LoggingFilter will now log each event to different loggers. The
loggers share a common prefix which is configurable. By default this prefix
will be the name of the logger used by SessionLog.
* Made SessionLog.getLogger() public and added SessionLog.getPrefix().
* The logger and prefix used by SessionLog can now be configured using the
static SessionLog.setPrefix() and SessionLog.setLogger() methods. This is
easier than having to add an attribute to the session.
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/LoggingFilter.java
mina/trunk/core/src/main/java/org/apache/mina/util/SessionLog.java
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/LoggingFilter.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/LoggingFilter.java?view=diff&rev=477612&r1=477611&r2=477612
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/LoggingFilter.java
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/LoggingFilter.java Tue
Nov 21 02:37:55 2006
@@ -21,12 +21,35 @@
import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoFilterAdapter;
+import org.apache.mina.common.IoHandler;
import org.apache.mina.common.IoSession;
import org.apache.mina.util.SessionLog;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
- * Logs all MINA protocol events to [EMAIL PROTECTED] Logger}.
+ * Logs all MINA protocol events using the [EMAIL PROTECTED] SessionLog}. Each
event will
+ * be logged to its own [EMAIL PROTECTED] Logger}. The names of these loggers
will share a
+ * common prefix. By default the name of the logger used by [EMAIL PROTECTED]
SessionLog}
+ * will be used as prefix. Use [EMAIL PROTECTED] #setLoggerNamePrefix(String)}
to override
+ * the default prefix.
+ * <p>
+ * For most of the events the name of the corresponding [EMAIL PROTECTED]
IoHandler} method
+ * which handles that event will be added to the prefix to form the logger
name.
+ * Here's a complete list of the logger names for each event:
+ * <table>
+ * <tr><td>Event</td><td>Name of logger</td></tr>
+ * <tr><td>sessionCreated</td><td><prefix>.sessionCreated</td></tr>
+ * <tr><td>sessionOpened</td><td><prefix>.sessionOpened</td></tr>
+ * <tr><td>sessionClosed</td><td><prefix>.sessionClosed</td></tr>
+ * <tr><td>sessionIdle</td><td><prefix>.sessionIdle</td></tr>
+ * <tr><td>exceptionCaught</td><td><prefix>.exceptionCaught</td></tr>
+ * <tr><td>messageReceived</td><td><prefix>.messageReceived</td></tr>
+ * <tr><td>messageSent</td><td><prefix>.messageSent</td></tr>
+ * <tr><td>[EMAIL PROTECTED]
IoSession#write(Object)}</td><td><prefix>.write</td></tr>
+ * <tr><td>[EMAIL PROTECTED]
IoSession#close()}</td><td><prefix>.close</td></tr>
+ * </table>
+ * </p>
*
* @author The Apache Directory Project ([email protected])
* @version $Rev$, $Date$
@@ -45,6 +68,10 @@
*/
public static final String LOGGER = SessionLog.LOGGER;
+ private static final String EVENT_LOGGER = LoggingFilter.class.getName() +
".event";
+
+ private String loggerNamePrefix = null;
+
/**
* Creates a new instance.
*/
@@ -52,72 +79,116 @@
{
}
+ /**
+ * Returns the prefix used for the names of the loggers used to log the
different
+ * events. If <code>null</code> the name of the [EMAIL PROTECTED] Logger}
used by
+ * [EMAIL PROTECTED] SessionLog} will be used for the prefix. The default
value is
+ * <code>null</code>.
+ *
+ * @return the prefix or <code>null</code>.
+ */
+ public String getLoggerNamePrefix() {
+ return loggerNamePrefix;
+ }
+
+ /**
+ * Sets the prefix used for the names of the loggers used to log the
different
+ * events. If set to <code>null</code> the name of the [EMAIL PROTECTED]
Logger} used by
+ * [EMAIL PROTECTED] SessionLog} will be used for the prefix.
+ *
+ * @param loggerNamePrefix the new prefix.
+ */
+ public void setLoggerNamePrefix(String loggerNamePrefix) {
+ this.loggerNamePrefix = loggerNamePrefix;
+ }
+
public void sessionCreated( NextFilter nextFilter, IoSession session )
{
- SessionLog.info( session, "CREATED" );
+ SessionLog.info( getLogger( session, "sessionCreated" ), session,
"CREATED" );
nextFilter.sessionCreated( session );
}
public void sessionOpened( NextFilter nextFilter, IoSession session )
{
- SessionLog.info( session, "OPENED" );
+ SessionLog.info( getLogger( session, "sessionOpened" ), session,
"OPENED" );
nextFilter.sessionOpened( session );
}
public void sessionClosed( NextFilter nextFilter, IoSession session )
{
- SessionLog.info( session, "CLOSED" );
+ SessionLog.info( getLogger( session, "sessionClosed" ), session,
"CLOSED" );
nextFilter.sessionClosed( session );
}
public void sessionIdle( NextFilter nextFilter, IoSession session,
IdleStatus status )
{
- if( SessionLog.isInfoEnabled( session ) )
+ Logger log = getLogger( session, "sessionIdle" );
+ if( log.isInfoEnabled() )
{
- SessionLog.info( session, "IDLE: " + status );
+ SessionLog.info( log, session, "IDLE: " + status );
}
nextFilter.sessionIdle( session, status );
}
public void exceptionCaught( NextFilter nextFilter, IoSession session,
Throwable cause )
{
- if( SessionLog.isInfoEnabled( session ) )
+ Logger log = getLogger( session, "exceptionCaught" );
+ if( log.isInfoEnabled() )
{
- SessionLog.info( session, "EXCEPTION:", cause );
+ SessionLog.info( log, session, "EXCEPTION:", cause );
}
nextFilter.exceptionCaught( session, cause );
}
public void messageReceived( NextFilter nextFilter, IoSession session,
Object message )
{
- if( SessionLog.isInfoEnabled( session ) )
+ Logger log = getLogger( session, "messageReceived" );
+ if( log.isInfoEnabled() )
{
- SessionLog.info( session, "RECEIVED: " + message );
+ SessionLog.info( log, session, "RECEIVED: " + message );
}
nextFilter.messageReceived( session, message );
}
public void messageSent( NextFilter nextFilter, IoSession session, Object
message )
{
- if( SessionLog.isInfoEnabled( session ) )
+ Logger log = getLogger( session, "messageSent" );
+ if( log.isInfoEnabled() )
{
- SessionLog.info( session, "SENT: " + message );
+ SessionLog.info( log, session, "SENT: " + message );
}
nextFilter.messageSent( session, message );
}
public void filterWrite( NextFilter nextFilter, IoSession session,
WriteRequest writeRequest )
{
- if( SessionLog.isInfoEnabled( session ) )
+ Logger log = getLogger( session, "write" );
+ if( log.isInfoEnabled() )
{
- SessionLog.info( session, "WRITE: " + writeRequest );
+ SessionLog.info( log, session, "WRITE: " + writeRequest );
}
nextFilter.filterWrite( session, writeRequest );
}
public void filterClose( NextFilter nextFilter, IoSession session ) throws
Exception
{
- SessionLog.info( session, "CLOSE" );
+ SessionLog.info( getLogger( session, "close" ), session, "CLOSE" );
nextFilter.filterClose( session );
+ }
+
+ private Logger getLogger( IoSession session, String event )
+ {
+ Logger log = ( Logger ) session.getAttribute( EVENT_LOGGER + "." +
event );
+ if( log == null )
+ {
+ String prefix = loggerNamePrefix;
+ if( prefix == null )
+ {
+ prefix = SessionLog.getLogger( session ).getName();
+ }
+ log = LoggerFactory.getLogger( prefix + "." + event );
+ session.setAttribute( EVENT_LOGGER + "." + event, log );
+ }
+ return log;
}
}
Modified: mina/trunk/core/src/main/java/org/apache/mina/util/SessionLog.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/util/SessionLog.java?view=diff&rev=477612&r1=477611&r2=477612
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/util/SessionLog.java
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/util/SessionLog.java Tue Nov
21 02:37:55 2006
@@ -27,13 +27,16 @@
* Provides utility methods to log protocol-specific messages.
* <p>
* Set [EMAIL PROTECTED] #PREFIX} and [EMAIL PROTECTED] #LOGGER} session
attributes
- * to override prefix string and logger.
+ * to override prefix string and logger or use [EMAIL PROTECTED]
#setPrefix(IoSession, String)}
+ * and [EMAIL PROTECTED] #setLogger(IoSession, Logger)}.
+ * </p>
*
* @author The Apache Directory Project ([email protected])
* @version $Rev$, $Date$
*
*/
-public class SessionLog {
+public class SessionLog
+{
/**
* Session attribute key: prefix string
*/
@@ -51,73 +54,105 @@
public static void debug( IoSession session, String message )
{
- Logger log = getLogger( session );
+ debug( getLogger( session ), session, message );
+ }
+
+ public static void debug( Logger log, IoSession session, String message )
+ {
if( log.isDebugEnabled() )
{
- log.debug( String.valueOf( session.getAttribute( PREFIX ) ) +
message );
+ log.debug( String.valueOf( getPrefix( session ) ) + message );
}
}
-
+
public static void debug( IoSession session, String message, Throwable
cause )
{
- Logger log = getLogger( session );
+ debug( getLogger( session ), session, message, cause );
+ }
+
+ public static void debug( Logger log, IoSession session, String message,
Throwable cause )
+ {
if( log.isDebugEnabled() )
{
- log.debug( String.valueOf( session.getAttribute( PREFIX ) ) +
message, cause );
+ log.debug( String.valueOf( getPrefix( session ) ) + message, cause
);
}
}
public static void info( IoSession session, String message )
{
- Logger log = getLogger( session );
+ info( getLogger( session ), session, message );
+ }
+
+ public static void info( Logger log, IoSession session, String message )
+ {
if( log.isInfoEnabled() )
{
- log.info( String.valueOf( session.getAttribute( PREFIX ) ) +
message );
+ log.info( String.valueOf( getPrefix( session ) ) + message );
}
}
-
+
public static void info( IoSession session, String message, Throwable
cause )
{
- Logger log = getLogger( session );
+ info( getLogger( session ), session, message, cause );
+ }
+
+ public static void info( Logger log, IoSession session, String message,
Throwable cause )
+ {
if( log.isInfoEnabled() )
{
- log.info( String.valueOf( session.getAttribute( PREFIX ) ) +
message, cause );
+ log.info( String.valueOf( getPrefix( session ) ) + message, cause
);
}
}
-
+
public static void warn( IoSession session, String message )
{
- Logger log = getLogger( session );
+ warn( getLogger( session ), session, message );
+ }
+
+ public static void warn( Logger log, IoSession session, String message )
+ {
if( log.isWarnEnabled() )
{
- log.warn( String.valueOf( session.getAttribute( PREFIX ) ) +
message );
+ log.warn( String.valueOf( getPrefix( session ) ) + message );
}
}
public static void warn( IoSession session, String message, Throwable
cause )
{
- Logger log = getLogger( session );
+ warn( getLogger( session ), session, message, cause );
+ }
+
+ public static void warn( Logger log, IoSession session, String message,
Throwable cause )
+ {
if( log.isWarnEnabled() )
{
- log.warn( String.valueOf( session.getAttribute( PREFIX ) ) +
message, cause );
+ log.warn( String.valueOf( getPrefix( session ) ) + message, cause
);
}
}
-
+
public static void error( IoSession session, String message )
{
- Logger log = getLogger( session );
+ error( getLogger( session ), session, message );
+ }
+
+ public static void error( Logger log, IoSession session, String message )
+ {
if( log.isErrorEnabled() )
{
- log.error( String.valueOf( session.getAttribute( PREFIX ) ) +
message );
+ log.error( String.valueOf( getPrefix( session ) ) + message );
}
}
public static void error( IoSession session, String message, Throwable
cause )
{
- Logger log = getLogger( session );
+ error( getLogger( session ), session, message, cause );
+ }
+
+ public static void error( Logger log, IoSession session, String message,
Throwable cause )
+ {
if( log.isErrorEnabled() )
{
- log.error( String.valueOf( session.getAttribute( PREFIX ) ) +
message, cause );
+ log.error( String.valueOf( getPrefix( session ) ) + message, cause
);
}
}
@@ -141,22 +176,35 @@
return getLogger( session ).isErrorEnabled();
}
- private static Logger getLogger( IoSession session )
+ public static String getPrefix( IoSession session )
+ {
+ String prefix = ( String ) session.getAttribute( PREFIX );
+ if( prefix == null )
+ {
+ prefix = "[" + session.getRemoteAddress() + "] ";
+ setPrefix( session, prefix );
+ }
+ return prefix;
+ }
+
+ public static void setPrefix( IoSession session, String prefix )
+ {
+ session.setAttribute( PREFIX, prefix );
+ }
+
+ public static Logger getLogger( IoSession session )
{
Logger log = ( Logger ) session.getAttribute( LOGGER );
if( log == null )
{
log = LoggerFactory.getLogger( getClass( session ) );
- String prefix = ( String ) session.getAttribute( PREFIX );
- if( prefix == null )
- {
- prefix = "[" + session.getRemoteAddress() + "] ";
- session.setAttribute( PREFIX, prefix );
- }
-
- session.setAttribute( LOGGER, log );
+ setLogger( session, log );
}
-
return log;
+ }
+
+ public static void setLogger( IoSession session, Logger log )
+ {
+ session.setAttribute( LOGGER, log );
}
}