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))) {