You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ch...@apache.org on 2015/07/22 10:31:55 UTC
svn commit: r1692236 - in /sling/trunk/bundles/commons/log/src:
main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java
test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java
Author: chetanm
Date: Wed Jul 22 08:31:55 2015
New Revision: 1692236
URL: http://svn.apache.org/r1692236
Log:
SLING-4764 - ClassCastException when trying to modify properties in custom appender Service
Modified:
sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java
sling/trunk/bundles/commons/log/src/test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.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=1692236&r1=1692235&r2=1692236&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 Wed Jul 22 08:31:55 2015
@@ -60,15 +60,15 @@ public class AppenderTracker extends Ser
@SuppressWarnings("unchecked")
@Override
public Object addingService(final ServiceReference reference) {
- final Appender<ILoggingEvent> a = (Appender<ILoggingEvent>) super.addingService(reference);
- a.setContext(loggerContext);
- a.start();
+ final Appender<ILoggingEvent> appender = (Appender<ILoggingEvent>) super.addingService(reference);
+ appender.setContext(loggerContext);
+ appender.start();
- final AppenderInfo ai = new AppenderInfo(reference, a);
+ final AppenderInfo ai = new AppenderInfo(reference, appender);
appenders.put(reference, ai);
attachAppender(ai);
- return ai;
+ return appender;
}
@SuppressWarnings("unchecked")
Modified: sling/trunk/bundles/commons/log/src/test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/log/src/test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java?rev=1692236&r1=1692235&r2=1692236&view=diff
==============================================================================
--- sling/trunk/bundles/commons/log/src/test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java (original)
+++ sling/trunk/bundles/commons/log/src/test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java Wed Jul 22 08:31:55 2015
@@ -45,6 +45,7 @@ import org.osgi.service.cm.Configuration
import org.slf4j.LoggerFactory;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.ops4j.pax.exam.CoreOptions.composite;
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
@@ -90,6 +91,37 @@ public class ITAppenderServices extends
}
@Test
+ public void testAppenderServiceModified() throws Exception {
+ TestAppender ta = registerAppender("foo.bar", "foo.baz");
+ delay();
+
+ Logger bar = (Logger)LoggerFactory.getLogger("foo.bar");
+ bar.setLevel(Level.DEBUG);
+ Logger baz = (Logger)LoggerFactory.getLogger("foo.baz");
+ baz.setLevel(Level.INFO);
+
+ bar.debug("Test message");
+ baz.debug("Test message"); // Would not be logged
+
+ // One event should be logged.
+ assertEquals(1, ta.events.size());
+
+ ta.reset();
+
+ Dictionary<String, Object> props = new Hashtable<String, Object>();
+ props.put("loggers", new String[]{"foo.bar2"});
+ sr.setProperties(props);
+
+ delay();
+ LoggerFactory.getLogger("foo.bar2").info("foo.bar2");
+ LoggerFactory.getLogger("foo.baz").info("foo.baz");
+
+ assertEquals(1, ta.msgs.size());
+ assertTrue(ta.msgs.contains("foo.bar2"));
+ assertFalse(ta.msgs.contains("foo.baz"));
+ }
+
+ @Test
public void testOsgiAppenderRef() throws Exception {
Configuration config = ca.getConfiguration(ITConfigAdminSupport.PID, null);
Dictionary<String, Object> p = new Hashtable<String, Object>();
@@ -137,16 +169,23 @@ public class ITAppenderServices extends
private static class TestAppender extends AppenderBase<ILoggingEvent> {
final List<ILoggingEvent> events = new ArrayList<ILoggingEvent>();
+ final List<String> msgs = new ArrayList<String>();
@Override
protected void append(ILoggingEvent eventObject) {
events.add(eventObject);
+ msgs.add(eventObject.getFormattedMessage());
}
@Override
public String getName() {
return "TestAppender";
}
+
+ public void reset(){
+ events.clear();
+ msgs.clear();
+ }
}
}