Author: cziegeler
Date: Mon Sep 16 13:18:01 2013
New Revision: 1523638

URL: http://svn.apache.org/r1523638
Log:
SLING-3069 :  Allow attaching an Appender to a Logger without changing its 
existing Log level 

Modified:
    
sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java
    
sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/SlingLogPanel.java

Modified: 
sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java?rev=1523638&r1=1523637&r2=1523638&view=diff
==============================================================================
--- 
sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java
 (original)
+++ 
sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java
 Mon Sep 16 13:18:01 2013
@@ -27,6 +27,7 @@ import java.util.concurrent.ConcurrentHa
 
 import org.apache.sling.commons.log.logback.internal.util.Util;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.framework.Filter;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
@@ -77,8 +78,13 @@ public class AppenderTracker extends Ser
 
     @Override
     public void removedService(final ServiceReference reference, final Object 
service) {
-        detachAppender(appenders.remove(reference));
-        // Probably we should remove the context from appender
+        final AppenderInfo ai = appenders.remove(reference);
+        this.detachAppender(ai);
+        if ( ai != null ) {
+            ai.appender.stop();
+            // context can't be unset
+        }
+
         super.removedService(reference, service);
     }
 
@@ -134,9 +140,11 @@ public class AppenderTracker extends Ser
 
         final Appender<ILoggingEvent> appender;
 
-        public AppenderInfo(ServiceReference ref, Appender<ILoggingEvent> 
appender) {
-            this.appender = appender;
+        final String pid;
 
+        public AppenderInfo(final ServiceReference ref, 
Appender<ILoggingEvent> appender) {
+            this.appender = appender;
+            this.pid = ref.getProperty(Constants.SERVICE_ID).toString();
             List<String> loggers = new ArrayList<String>();
             for (String logger : Util.toList(ref.getProperty(PROP_LOGGER))) {
                 loggers.add(logger);

Modified: 
sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/SlingLogPanel.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/SlingLogPanel.java?rev=1523638&r1=1523637&r2=1523638&view=diff
==============================================================================
--- 
sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/SlingLogPanel.java
 (original)
+++ 
sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/SlingLogPanel.java
 Mon Sep 16 13:18:01 2013
@@ -401,7 +401,7 @@ public class SlingLogPanel extends HttpS
         } else if (ctx.isDynamicAppender(appender)) {
             final AppenderInfo ai = ctx.dynamicAppenders.get(appender);
 
-            final String pid = 
ai.serviceReference.getProperty(Constants.SERVICE_ID).toString();
+            final String pid = ai.pid;
             return createUrl(consoleAppRoot, "services", pid);
         } else {
             return "[others]";


Reply via email to