You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2013/09/16 14:54:31 UTC

svn commit: r1523617 - /sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java

Author: cziegeler
Date: Mon Sep 16 12:54:31 2013
New Revision: 1523617

URL: http://svn.apache.org/r1523617
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

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=1523617&r1=1523616&r2=1523617&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 12:54:31 2013
@@ -39,13 +39,14 @@ import ch.qos.logback.classic.spi.ILoggi
 import ch.qos.logback.core.Appender;
 
 public class AppenderTracker extends ServiceTracker implements LogbackResetListener {
+
     private static final String PROP_LOGGER = "loggers";
 
     private final LoggerContext loggerContext;
 
     private final Map<ServiceReference, AppenderInfo> appenders = new ConcurrentHashMap<ServiceReference, AppenderInfo>();
 
-    public AppenderTracker(BundleContext context, LoggerContext loggerContext) throws InvalidSyntaxException {
+    public AppenderTracker(final BundleContext context, final LoggerContext loggerContext) throws InvalidSyntaxException {
         super(context, createFilter(), null);
         this.loggerContext = loggerContext;
         super.open();
@@ -53,28 +54,29 @@ public class AppenderTracker extends Ser
 
     @SuppressWarnings("unchecked")
     @Override
-    public Object addingService(ServiceReference reference) {
-        Appender<ILoggingEvent> a = (Appender<ILoggingEvent>) super.addingService(reference);
+    public Object addingService(final ServiceReference reference) {
+        final Appender<ILoggingEvent> a = (Appender<ILoggingEvent>) super.addingService(reference);
         a.setContext(loggerContext);
         a.start();
 
-        AppenderInfo ai = new AppenderInfo(reference, a);
+        final AppenderInfo ai = new AppenderInfo(reference, a);
         appenders.put(reference, ai);
         attachAppender(ai);
+
         return ai;
     }
 
     @SuppressWarnings("unchecked")
     @Override
-    public void modifiedService(ServiceReference reference, Object service) {
-        AppenderInfo ai = appenders.remove(reference);
-        detachAppender(ai);
-        appenders.put(reference, new AppenderInfo(reference, (Appender<ILoggingEvent>) service));
-        attachAppender(ai);
+    public void modifiedService(final ServiceReference reference, final Object service) {
+        detachAppender(appenders.remove(reference));
+        final AppenderInfo nai = new AppenderInfo(reference, (Appender<ILoggingEvent>) service);
+        appenders.put(reference, nai);
+        attachAppender(nai);
     }
 
     @Override
-    public void removedService(ServiceReference reference, Object service) {
+    public void removedService(final ServiceReference reference, final Object service) {
         detachAppender(appenders.remove(reference));
         // Probably we should remove the context from appender
         super.removedService(reference, service);
@@ -86,8 +88,8 @@ public class AppenderTracker extends Ser
 
     private void detachAppender(final AppenderInfo ai) {
         if (ai != null) {
-            for (final String li : ai.loggers) {
-                final Logger logger = loggerContext.getLogger(li);
+            for (final String name : ai.loggers) {
+                final Logger logger = loggerContext.getLogger(name);
 
                 logger.detachAppender(ai.appender);
             }
@@ -95,25 +97,24 @@ public class AppenderTracker extends Ser
     }
 
     private void attachAppender(final AppenderInfo ai) {
-        if (ai == null) {
-            return;
-        }
-        for (final String li : ai.loggers) {
-            final Logger logger = loggerContext.getLogger(li);
+        if (ai != null) {
+            for (final String name : ai.loggers) {
+                final Logger logger = loggerContext.getLogger(name);
 
-            logger.addAppender(ai.appender);
+                logger.addAppender(ai.appender);
+            }
         }
     }
 
     @Override
-    public void onResetStart(LoggerContext context) {
+    public void onResetStart(final LoggerContext context) {
         for (AppenderInfo ai : appenders.values()) {
             attachAppender(ai);
         }
     }
 
     @Override
-    public void onResetComplete(LoggerContext context) {
+    public void onResetComplete(final LoggerContext context) {
 
     }
 
@@ -133,11 +134,8 @@ public class AppenderTracker extends Ser
 
         final Appender<ILoggingEvent> appender;
 
-        final ServiceReference serviceReference;
-
         public AppenderInfo(ServiceReference ref, Appender<ILoggingEvent> appender) {
             this.appender = appender;
-            this.serviceReference = ref;
 
             List<String> loggers = new ArrayList<String>();
             for (String logger : Util.toList(ref.getProperty(PROP_LOGGER))) {