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]";