You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2008/09/26 19:50:08 UTC

svn commit: r699433 - in /geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper: stream/SessionInputStream.java stream/SessionOutputStream.java transport/base/BaseService.java transport/base/LoggingFilter.java

Author: jdillon
Date: Fri Sep 26 10:50:07 2008
New Revision: 699433

URL: http://svn.apache.org/viewvc?rev=699433&view=rev
Log:
Add custom LoggingFilter to set the right levels
Clean up some remote session logging

Added:
    geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/LoggingFilter.java   (with props)
Modified:
    geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/stream/SessionInputStream.java
    geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/stream/SessionOutputStream.java
    geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/BaseService.java

Modified: geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/stream/SessionInputStream.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/stream/SessionInputStream.java?rev=699433&r1=699432&r2=699433&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/stream/SessionInputStream.java (original)
+++ geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/stream/SessionInputStream.java Fri Sep 26 10:50:07 2008
@@ -168,7 +168,7 @@
 
             ByteBuffer src = msg.getBuffer();
 
-            log.debug("Writing {} bytes", src.remaining());
+            log.trace("Writing {} bytes", src.remaining());
 
             if (buff.hasRemaining()) {
                 buff.compact();

Modified: geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/stream/SessionOutputStream.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/stream/SessionOutputStream.java?rev=699433&r1=699432&r2=699433&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/stream/SessionOutputStream.java (original)
+++ geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/stream/SessionOutputStream.java Fri Sep 26 10:50:07 2008
@@ -100,7 +100,7 @@
     private synchronized void write(final ByteBuffer buff) throws IOException {
         ensureOpened();
 
-        log.debug("Writing {} bytes", buff.remaining());
+        log.trace("Writing {} bytes", buff.remaining());
 
         WriteFuture wf = session.write(new StreamMessage(buff));
 

Modified: geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/BaseService.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/BaseService.java?rev=699433&r1=699432&r2=699433&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/BaseService.java (original)
+++ geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/BaseService.java Fri Sep 26 10:50:07 2008
@@ -36,7 +36,6 @@
 import org.apache.mina.common.IoSession;
 import org.apache.mina.common.SimpleByteBufferAllocator;
 import org.apache.mina.common.ThreadModel;
-import org.apache.mina.filter.LoggingFilter;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
 import org.slf4j.Logger;
@@ -179,10 +178,6 @@
 
         chain.addLast(ProtocolCodecFilter.class.getSimpleName(), new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
 
-        //
-        // FIXME: Need to create a custom LoggingFilter which logs things as debug and trace, not info, PITA
-        //
-        
         chain.addLast(LoggingFilter.class.getSimpleName(), new LoggingFilter());
 
         chain.addLast(SessionStreamFilter.class.getSimpleName(), new SessionStreamFilter());

Added: geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/LoggingFilter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/LoggingFilter.java?rev=699433&view=auto
==============================================================================
--- geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/LoggingFilter.java (added)
+++ geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/LoggingFilter.java Fri Sep 26 10:50:07 2008
@@ -0,0 +1,175 @@
+/*
+ * 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.geronimo.gshell.whisper.transport.base;
+
+import org.apache.geronimo.gshell.whisper.util.SessionAttributeBinder;
+import org.apache.mina.common.IdleStatus;
+import org.apache.mina.common.IoFilterAdapter;
+import org.apache.mina.common.IoSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Logs all MINA protocol events to a {@link Logger}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class LoggingFilter
+    extends IoFilterAdapter
+{
+    private static final SessionAttributeBinder<Logger> LOGGER_BINDER = new SessionAttributeBinder<Logger>(LoggingFilter.class, "logger");
+
+    private static final SessionAttributeBinder<String> PREFIX_BINDER = new SessionAttributeBinder<String>(LoggingFilter.class, "prefix");
+
+    private Logger getLogger(final IoSession session) {
+        assert session != null;
+
+        Logger logger;
+
+        try {
+            logger = LOGGER_BINDER.lookup(session);
+        }
+        catch (SessionAttributeBinder.NotBoundException e) {
+            logger = LoggerFactory.getLogger(session.getHandler().getClass());
+
+            if (!PREFIX_BINDER.isBound(session)) {
+                String prefix = "[" + session.getRemoteAddress() + "]";
+                PREFIX_BINDER.bind(session, prefix);
+            }
+
+            LOGGER_BINDER.bind(session, logger);
+        }
+
+        return logger;
+    }
+
+    public void sessionCreated(final NextFilter nextFilter, final IoSession session) {
+        assert nextFilter != null;
+        assert session != null;
+
+        Logger log = getLogger(session);
+        if (log.isDebugEnabled()) {
+            log.debug("{} {}", PREFIX_BINDER.lookup(session), "CREATED");
+        }
+
+        nextFilter.sessionCreated(session);
+    }
+
+    public void sessionOpened(final NextFilter nextFilter, final IoSession session) {
+        assert nextFilter != null;
+        assert session != null;
+
+        Logger log = getLogger(session);
+        if (log.isDebugEnabled()) {
+            log.debug("{} {}", PREFIX_BINDER.lookup(session), "OPENED");
+        }
+
+        nextFilter.sessionOpened(session);
+    }
+
+    public void sessionClosed(final NextFilter nextFilter, final IoSession session) {
+        assert nextFilter != null;
+        assert session != null;
+
+        Logger log = getLogger(session);
+        if (log.isDebugEnabled()) {
+            log.debug("{} {}", PREFIX_BINDER.lookup(session), "CLOSED");
+        }
+
+        nextFilter.sessionClosed(session);
+    }
+
+    public void sessionIdle(final NextFilter nextFilter, final IoSession session, final IdleStatus status) {
+        assert nextFilter != null;
+        assert session != null;
+        assert status != null;
+
+        Logger log = getLogger(session);
+        if (log.isTraceEnabled()) {
+            log.trace("{} {}: {}", new Object[] { PREFIX_BINDER.lookup(session), "IDLE", status });
+        }
+
+        nextFilter.sessionIdle(session, status);
+    }
+
+    public void exceptionCaught(final NextFilter nextFilter, final IoSession session, final Throwable cause) {
+        assert nextFilter != null;
+        assert session != null;
+        assert cause != null;
+
+        Logger log = getLogger(session);
+        if (log.isWarnEnabled()) {
+            log.warn(PREFIX_BINDER.lookup(session) + " EXCEPTION: " + cause, cause);
+        }
+
+        nextFilter.exceptionCaught(session, cause);
+    }
+
+    public void messageReceived(final NextFilter nextFilter, final IoSession session, final Object message) {
+        assert nextFilter != null;
+        assert session != null;
+        assert message != null;
+
+        Logger log = getLogger(session);
+        if (log.isTraceEnabled()) {
+            log.trace("{} {}: {}", new Object[] { PREFIX_BINDER.lookup(session), "RECEIVED", message });
+        }
+
+        nextFilter.messageReceived(session, message);
+    }
+
+    public void messageSent(final NextFilter nextFilter, final IoSession session, final Object message) {
+        assert nextFilter != null;
+        assert session != null;
+        assert message != null;
+
+        Logger log = getLogger(session);
+        if (log.isTraceEnabled()) {
+            log.trace("{} {}: {}", new Object[] { PREFIX_BINDER.lookup(session), "SENT", message });
+        }
+
+        nextFilter.messageSent(session, message);
+    }
+
+    public void filterWrite(final NextFilter nextFilter, final IoSession session, final WriteRequest writeRequest) {
+        assert nextFilter != null;
+        assert session != null;
+        assert writeRequest != null;
+
+        Logger log = getLogger(session);
+        if (log.isTraceEnabled()) {
+            log.trace("{} {}: {}", new Object[] { PREFIX_BINDER.lookup(session), "WRITE", writeRequest });
+        }
+
+        nextFilter.filterWrite(session, writeRequest);
+    }
+
+    public void filterClose(final NextFilter nextFilter, final IoSession session) throws Exception {
+        assert nextFilter != null;
+        assert session != null;
+
+        Logger log = getLogger(session);
+        if (log.isDebugEnabled()) {
+            log.debug("{} {}", PREFIX_BINDER.lookup(session), "CLOSE");
+        }
+
+        nextFilter.filterClose(session);
+    }
+}

Propchange: geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/LoggingFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/LoggingFilter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/main/java/org/apache/geronimo/gshell/whisper/transport/base/LoggingFilter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain