Author: norman
Date: Thu Jan 26 20:12:39 2012
New Revision: 1236374

URL: http://svn.apache.org/viewvc?rev=1236374&view=rev
Log:
Add username to logging context if set. See PROTOCOLS-91

Added:
    
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ContextualLogger.java
   (with props)
Modified:
    
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSessionImpl.java
    
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ProtocolSessionLogger.java

Modified: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSessionImpl.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSessionImpl.java?rev=1236374&r1=1236373&r2=1236374&view=diff
==============================================================================
--- 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSessionImpl.java
 (original)
+++ 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolSessionImpl.java
 Thu Jan 26 20:12:39 2012
@@ -27,8 +27,8 @@ import java.util.Map;
 
 import org.apache.james.protocols.api.ProtocolTransport;
 import org.apache.james.protocols.api.handler.LineHandler;
+import org.apache.james.protocols.api.logger.ContextualLogger;
 import org.apache.james.protocols.api.logger.Logger;
-import org.apache.james.protocols.api.logger.ProtocolSessionLogger;
 
 /**
  * Basic implementation of {@link ProtocolSession}
@@ -37,7 +37,7 @@ import org.apache.james.protocols.api.lo
  */
 public class ProtocolSessionImpl implements ProtocolSession {
 
-    private final ProtocolSessionLogger pLog;
+    private final Logger pLog;
     private final ProtocolTransport transport;
     private final Map<String, Object> connectionState;
     private final Map<String, Object> sessionState;
@@ -48,7 +48,7 @@ public class ProtocolSessionImpl impleme
     
     public ProtocolSessionImpl(Logger logger, ProtocolTransport transport, 
ProtocolConfiguration config) {
         this.transport = transport;
-        this.pLog = new ProtocolSessionLogger(transport.getId(), logger);
+        this.pLog = new ContextualLogger(this, logger);
         this.connectionState = new HashMap<String, Object>();
         this.sessionState = new HashMap<String, Object>();
         this.config = config;

Added: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ContextualLogger.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ContextualLogger.java?rev=1236374&view=auto
==============================================================================
--- 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ContextualLogger.java
 (added)
+++ 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ContextualLogger.java
 Thu Jan 26 20:12:39 2012
@@ -0,0 +1,172 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.protocols.api.logger;
+
+import org.apache.james.protocols.api.ProtocolSession;
+
+/**
+ * {@link Logger} which adds context informations to the logged message.
+ *
+ */
+public class ContextualLogger implements Logger{
+
+    private final ProtocolSession session;
+    private final Logger logger;
+
+    public ContextualLogger(ProtocolSession session, Logger logger) {
+        this.session = session;
+        this.logger = logger;
+    }
+    
+    private String getText(String str) {
+        String user = session.getUser();
+        StringBuilder sb = new StringBuilder();
+        sb.append("Id='").append(session.getSessionID());
+        if (user != null) {
+            sb.append("' ").append("User='").append(user).append("'");
+        }
+        sb.append(" ").append(str);
+        return sb.toString();
+    }
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.protocols.api.logger.Logger#debug(java.lang.String)
+     */
+    public void debug(String arg0) {
+        logger.debug(getText(arg0));
+    }
+
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.protocols.api.logger.Logger#debug(java.lang.String, 
java.lang.Throwable)
+     */
+    public void debug(String arg0, Throwable arg1) {
+        logger.debug(getText(arg0), arg1);
+    }
+
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.protocols.api.logger.Logger#error(java.lang.String)
+     */
+    public void error(String arg0) {
+        logger.error(getText(arg0));
+    }
+
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.protocols.api.logger.Logger#error(java.lang.String, 
java.lang.Throwable)
+     */
+    public void error(String arg0, Throwable arg1) {
+        logger.error(getText(arg0), arg1);
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.protocols.api.logger.Logger#info(java.lang.String)
+     */
+    public void info(String arg0) {
+        logger.info(getText(arg0));
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.protocols.api.logger.Logger#info(java.lang.String, 
java.lang.Throwable)
+     */
+    public void info(String arg0, Throwable arg1) {
+        logger.info(getText(arg0), arg1);
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.protocols.api.logger.Logger#isDebugEnabled()
+     */
+    public boolean isDebugEnabled() {
+        return logger.isDebugEnabled();
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.protocols.api.logger.Logger#isErrorEnabled()
+     */
+    public boolean isErrorEnabled() {
+        return logger.isErrorEnabled();
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.protocols.api.logger.Logger#isInfoEnabled()
+     */
+    public boolean isInfoEnabled() {
+        return logger.isInfoEnabled();
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.protocols.api.logger.Logger#isTraceEnabled()
+     */
+    public boolean isTraceEnabled() {
+        return logger.isTraceEnabled();
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.protocols.api.logger.Logger#isWarnEnabled()
+     */
+    public boolean isWarnEnabled() {
+        return logger.isWarnEnabled();
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.protocols.api.logger.Logger#trace(java.lang.String)
+     */
+    public void trace(String arg0) {
+        logger.trace(getText(arg0));
+    }
+    
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.protocols.api.logger.Logger#trace(java.lang.String, 
java.lang.Throwable)
+     */
+    public void trace(String arg0, Throwable arg1) {
+        logger.trace(getText(arg0), arg1);
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.protocols.api.logger.Logger#warn(java.lang.String)
+     */
+    public void warn(String arg0) {
+        logger.warn(getText(arg0));
+    }
+
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.protocols.api.logger.Logger#warn(java.lang.String, 
java.lang.Throwable)
+     */
+    public void warn(String arg0, Throwable arg1) {
+        logger.warn(getText(arg0), arg1);
+    }
+
+}

Propchange: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ContextualLogger.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ProtocolSessionLogger.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ProtocolSessionLogger.java?rev=1236374&r1=1236373&r2=1236374&view=diff
==============================================================================
--- 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ProtocolSessionLogger.java
 (original)
+++ 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/logger/ProtocolSessionLogger.java
 Thu Jan 26 20:12:39 2012
@@ -24,8 +24,10 @@ package org.apache.james.protocols.api.l
  * A {@link Logger} implementation which suffix every log message with the
  * session id Id
  * 
+ * @deprecated use {@link ContextualLogger}
  * 
  */
+@Deprecated
 public class ProtocolSessionLogger implements Logger {
     private final Logger logger;
     private final String id;



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to