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:28:15 UTC
svn commit: r1523611 -
/sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java
Author: cziegeler
Date: Mon Sep 16 12:28:14 2013
New Revision: 1523611
URL: http://svn.apache.org/r1523611
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=1523611&r1=1523610&r2=1523611&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:28:14 2013
@@ -25,12 +25,6 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.Appender;
-
import org.apache.sling.commons.log.logback.internal.util.Util;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Filter;
@@ -39,6 +33,11 @@ import org.osgi.framework.InvalidSyntaxE
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTracker;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.Appender;
+
public class AppenderTracker extends ServiceTracker implements LogbackResetListener {
private static final String PROP_LOGGER = "loggers";
@@ -85,38 +84,22 @@ public class AppenderTracker extends Ser
return appenders.values();
}
- private void detachAppender(AppenderInfo ai) {
+ private void detachAppender(final AppenderInfo ai) {
if (ai != null) {
- for (LoggerInfo li : ai.loggers) {
- Logger logger = loggerContext.getLogger(li.name);
-
- // Reset values back to old ones if they match the
- // ones we modified to
- if (li.level.equals(logger.getLevel())) {
- logger.setLevel(li.oldLevel);
- }
-
- if (logger.isAdditive() == li.additive) {
- logger.setAdditive(li.oldAdditive);
- }
+ for (final String li : ai.loggers) {
+ final Logger logger = loggerContext.getLogger(li);
logger.detachAppender(ai.appender);
}
}
}
- private void attachAppender(AppenderInfo ai) {
+ private void attachAppender(final AppenderInfo ai) {
if (ai == null) {
return;
}
- for (LoggerInfo li : ai.loggers) {
- Logger logger = loggerContext.getLogger(li.name);
-
- li.oldLevel = logger.getLevel();
- li.oldAdditive = logger.isAdditive();
-
- logger.setLevel(li.level);
- logger.setAdditive(li.additive);
+ for (final String li : ai.loggers) {
+ final Logger logger = loggerContext.getLogger(li);
logger.addAppender(ai.appender);
}
@@ -146,7 +129,7 @@ public class AppenderTracker extends Ser
}
static class AppenderInfo {
- final List<LoggerInfo> loggers;
+ final List<String> loggers;
final Appender<ILoggingEvent> appender;
@@ -156,51 +139,12 @@ public class AppenderTracker extends Ser
this.appender = appender;
this.serviceReference = ref;
- List<LoggerInfo> loggers = new ArrayList<LoggerInfo>();
+ List<String> loggers = new ArrayList<String>();
for (String logger : Util.toList(ref.getProperty(PROP_LOGGER))) {
- loggers.add(new LoggerInfo(logger));
+ loggers.add(logger);
}
this.loggers = loggers;
}
}
-
- private static class LoggerInfo {
- final Level level;
-
- final String name;
-
- final boolean additive;
-
- Level oldLevel;
-
- boolean oldAdditive;
-
- public LoggerInfo(String loggerSpec) {
- String[] parts = loggerSpec.split(":");
-
- Level level = Level.INFO;
- if (parts.length >= 2) {
- level = Level.valueOf(safeTrim(parts[1]));
- }
-
- boolean additive = false;
- if (parts.length >= 3) {
- additive = Boolean.valueOf(parts[2]);
- }
-
- this.level = level;
- this.name = safeTrim(parts[0]);
- this.additive = additive;
- }
-
- }
-
- private static String safeTrim(String s) {
- if (s != null) {
- return s.trim();
- }
- return null;
- }
-
}