You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2017/06/16 16:07:52 UTC

karaf-decanter git commit: [KARAF-5192] Expose ignored categories by the decanter log collector to user and filter the appender logger categories

Repository: karaf-decanter
Updated Branches:
  refs/heads/master 2f031fb54 -> 152f602d2


[KARAF-5192] Expose ignored categories by the decanter log collector to user and filter the appender logger categories


Project: http://git-wip-us.apache.org/repos/asf/karaf-decanter/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-decanter/commit/152f602d
Tree: http://git-wip-us.apache.org/repos/asf/karaf-decanter/tree/152f602d
Diff: http://git-wip-us.apache.org/repos/asf/karaf-decanter/diff/152f602d

Branch: refs/heads/master
Commit: 152f602d2487818694d55e0792ed79b9f2d5dd2a
Parents: 2f031fb
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Fri Jun 16 18:07:03 2017 +0200
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Fri Jun 16 18:07:03 2017 +0200

----------------------------------------------------------------------
 assembly/src/main/feature/feature.xml           |   1 +
 collector/log/pom.xml                           |  25 ++++
 .../org.apache.karaf.decanter.collector.log.cfg |   7 ++
 .../decanter/collector/log/LogAppender.java     |  15 ++-
 .../decanter/collector/log/LogAppenderTest.java | 116 ++++++++++++++++++-
 5 files changed, 157 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/152f602d/assembly/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/assembly/src/main/feature/feature.xml b/assembly/src/main/feature/feature.xml
index c707b23..4466de8 100644
--- a/assembly/src/main/feature/feature.xml
+++ b/assembly/src/main/feature/feature.xml
@@ -35,6 +35,7 @@
     <feature name="decanter-collector-log" version="${project.version}" description="Karaf Decanter Log Messages Collector">
         <feature>decanter-common</feature>
         <bundle>mvn:org.apache.karaf.decanter.collector/org.apache.karaf.decanter.collector.log/${project.version}</bundle>
+        <configfile finalname="/etc/org.apache.karaf.decanter.collector.log.cfg">mvn:org.apache.karaf.decanter.collector/org.apache.karaf.decanter.collector.log/${project.version}/cfg</configfile>
     </feature>
     
     <feature name="decanter-collector-log-socket-core" version="${project.version}" description="Karaf Decanter Log4j socket Collector core">

http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/152f602d/collector/log/pom.xml
----------------------------------------------------------------------
diff --git a/collector/log/pom.xml b/collector/log/pom.xml
index b7a9890..1040f79 100644
--- a/collector/log/pom.xml
+++ b/collector/log/pom.xml
@@ -41,4 +41,29 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    <file>src/main/cfg/org.apache.karaf.decanter.collector.log.cfg</file>
+                                    <type>cfg</type>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/152f602d/collector/log/src/main/cfg/org.apache.karaf.decanter.collector.log.cfg
----------------------------------------------------------------------
diff --git a/collector/log/src/main/cfg/org.apache.karaf.decanter.collector.log.cfg b/collector/log/src/main/cfg/org.apache.karaf.decanter.collector.log.cfg
new file mode 100644
index 0000000..c3c11ec
--- /dev/null
+++ b/collector/log/src/main/cfg/org.apache.karaf.decanter.collector.log.cfg
@@ -0,0 +1,7 @@
+#
+# Decanter Log collector configuration
+#
+
+# logger categories that the log collector should ignore
+# By default, we ignored all messages coming from Decanter Appenders
+ignored.categories=org.apache.karaf.decanter.appender.*
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/152f602d/collector/log/src/main/java/org/apache/karaf/decanter/collector/log/LogAppender.java
----------------------------------------------------------------------
diff --git a/collector/log/src/main/java/org/apache/karaf/decanter/collector/log/LogAppender.java b/collector/log/src/main/java/org/apache/karaf/decanter/collector/log/LogAppender.java
index 068b62a..c833771 100644
--- a/collector/log/src/main/java/org/apache/karaf/decanter/collector/log/LogAppender.java
+++ b/collector/log/src/main/java/org/apache/karaf/decanter/collector/log/LogAppender.java
@@ -49,11 +49,11 @@ import org.slf4j.LoggerFactory;
 public class LogAppender implements PaxAppender {
     
     private static final String MDC_IN_LOG_APPENDER = "inLogAppender";
-    private final static String[] ignoredCategories = {"org.apache.karaf.decanter.collector.log"};
     private final static Logger LOGGER = LoggerFactory.getLogger(LogAppender.class);
     private final static Pattern PATTERN = Pattern.compile("[^A-Za-z0-9]");
 
     private Dictionary<String, Object> properties;
+    protected String[] ignoredCategories;
 
     private EventAdmin dispatcher;
 
@@ -61,6 +61,9 @@ public class LogAppender implements PaxAppender {
     @Activate
     public void activate(ComponentContext context) {
         this.properties = context.getProperties();
+        if (this.properties.get("ignored.categories") != null) {
+            ignoredCategories = ((String)this.properties.get("ignored.categories")).split(",");
+        }
     }
     
     public void doAppend(PaxLoggingEvent event) {
@@ -153,13 +156,15 @@ public class LogAppender implements PaxAppender {
         return builder.toString();
     }
 
-    private boolean isIgnored(String loggerName) {
+    protected boolean isIgnored(String loggerName) {
         if (loggerName == null) {
             return true;
         }
-        for (String cat : ignoredCategories) {
-            if (loggerName.equals(cat)) {
-                return true;
+        if (ignoredCategories != null) {
+            for (String cat : ignoredCategories) {
+                if (loggerName.matches(cat)) {
+                    return true;
+                }
             }
         }
         return false;

http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/152f602d/collector/log/src/test/java/org/apache/karaf/decanter/collector/log/LogAppenderTest.java
----------------------------------------------------------------------
diff --git a/collector/log/src/test/java/org/apache/karaf/decanter/collector/log/LogAppenderTest.java b/collector/log/src/test/java/org/apache/karaf/decanter/collector/log/LogAppenderTest.java
index 8c728b6..a2d8f08 100644
--- a/collector/log/src/test/java/org/apache/karaf/decanter/collector/log/LogAppenderTest.java
+++ b/collector/log/src/test/java/org/apache/karaf/decanter/collector/log/LogAppenderTest.java
@@ -2,9 +2,21 @@ package org.apache.karaf.decanter.collector.log;
 
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.*;
 
 import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.ComponentInstance;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.List;
+import java.util.Properties;
 
 public class LogAppenderTest {
 
@@ -20,7 +32,107 @@ public class LogAppenderTest {
         assertThat(cleanedLoggerName, not(containsString("&")));
         assertThat(cleanedLoggerName, not(containsString("!")));
         assertThat(cleanedLoggerName, containsString("_"));
-        
+    }
+
+    @Test
+    public void testIgnoredLoggerCategories() {
+        LogAppender appender = new LogAppender();
+
+        ComponentContext componentContext = new ComponentContextMock();
+        componentContext.getProperties().put("ignored.categories", "org.apache.karaf.decanter.collector.log.*,test,other");
+
+        appender.activate(componentContext);
+
+        assertEquals("org.apache.karaf.decanter.collector.log.*", appender.ignoredCategories[0]);
+        assertEquals("test", appender.ignoredCategories[1]);
+        assertEquals("other", appender.ignoredCategories[2]);
+
+        assertFalse(appender.isIgnored("org.apache.karaf.decanter.other"));
+        assertTrue(appender.isIgnored("org.apache.karaf.decanter.collector.log"));
+        assertTrue(appender.isIgnored("org.apache.karaf.decanter.collector.log.LogEvent"));
+    }
+
+    private class ComponentContextMock implements ComponentContext {
+
+        private Properties properties;
+
+        public ComponentContextMock() {
+            this.properties = new Properties();
+        }
+
+        @Override
+        public Dictionary getProperties() {
+            return this.properties;
+        }
+
+        @Override
+        public Object locateService(String s) {
+            return null;
+        }
+
+        @Override
+        public Object locateService(String s, ServiceReference serviceReference) {
+            return null;
+        }
+
+        @Override
+        public Object[] locateServices(String s) {
+            return new Object[0];
+        }
+
+        @Override
+        public BundleContext getBundleContext() {
+            return null;
+        }
+
+        @Override
+        public Bundle getUsingBundle() {
+            return null;
+        }
+
+        @Override
+        public ComponentInstance getComponentInstance() {
+            return null;
+        }
+
+        @Override
+        public void enableComponent(String s) {
+
+        }
+
+        @Override
+        public void disableComponent(String s) {
+
+        }
+
+        @Override
+        public ServiceReference getServiceReference() {
+            return null;
+        }
+    }
+
+    private class DispatcherMock implements EventAdmin {
+
+        private List<Event> postEvents = new ArrayList<>();
+        private List<Event> sendEvents = new ArrayList<>();
+
+        @Override
+        public void postEvent(Event event) {
+            postEvents.add(event);
+        }
+
+        @Override
+        public void sendEvent(Event event) {
+            sendEvents.add(event);
+        }
+
+        public List<Event> getPostEvents() {
+            return postEvents;
+        }
+
+        public List<Event> getSendEvents() {
+            return sendEvents;
+        }
     }
 
 }