Merge pull request #93 from raviu/master
[KARAF-6342] adding location disable configuration to karaf decanter co…
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
index 7321fd1..527f805 100644
--- 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
@@ -33,3 +33,10 @@
#fields.rename.level=severity
#fields.rename.renderedMessage=logMessage
#fields.remove.timestamp=true
+
+# logger categories that the log collector should disable collecting
+# location information for. By default all logs will contain location
+# information. To disable for all logs use .*
+#location.disabled=.*
+# To disable selectively, use the same format as ignored.categories
+#location.disabled=org.apache.karaf.decanter.appender.*
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 acf8884..542a82e 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
@@ -56,6 +56,7 @@
private Dictionary<String, Object> properties;
protected String[] ignoredCategories;
+ protected String[] locationDisabledCategories;
@SuppressWarnings("unchecked")
@Activate
@@ -64,6 +65,9 @@
if (this.properties.get("ignored.categories") != null) {
ignoredCategories = ((String)this.properties.get("ignored.categories")).split(",");
}
+ if (this.properties.get("location.disabled") != null) {
+ locationDisabledCategories = ((String) this.properties.get("location.disabled")).split(",");
+ }
}
public void doAppend(PaxLoggingEvent event) {
@@ -82,7 +86,7 @@
}
private void appendInternal(PaxLoggingEvent event) throws Exception {
- if (isIgnored(event.getLoggerName())) {
+ if (isIgnored(event.getLoggerName(), ignoredCategories)) {
LOGGER.debug("{} logger is ignored by the log collector", event.getLoggerName());
return;
}
@@ -100,7 +104,9 @@
data.put("level", event.getLevel().toString());
data.put("renderedMessage", event.getRenderedMessage());
data.put("MDC", event.getProperties());
- putLocation(data, event.getLocationInformation());
+ if (locationDisabledCategories == null || !isIgnored(event.getLoggerName(), locationDisabledCategories)) {
+ putLocation(data, event.getLocationInformation());
+ }
String[] throwableAr = event.getThrowableStrRep();
if (throwableAr != null) {
data.put("throwable", join(throwableAr));
@@ -144,12 +150,12 @@
return builder.toString();
}
- protected boolean isIgnored(String loggerName) {
+ protected boolean isIgnored(String loggerName, String[] ignoreList) {
if (loggerName == null) {
return true;
}
- if (ignoredCategories != null) {
- for (String cat : ignoredCategories) {
+ if (ignoreList != null) {
+ for (String cat : ignoreList) {
if (loggerName.matches(cat)) {
return true;
}
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 9115472..1526445 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
@@ -16,10 +16,6 @@
*/
package org.apache.karaf.decanter.collector.log;
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.*;
-
import org.junit.Test;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
@@ -34,6 +30,10 @@
import java.util.List;
import java.util.Properties;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.*;
+
public class LogAppenderTest {
@Test
@@ -63,9 +63,45 @@
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"));
+ assertFalse(appender.isIgnored("org.apache.karaf.decanter.other", appender.ignoredCategories));
+ assertTrue(appender.isIgnored("org.apache.karaf.decanter.collector.log", appender.ignoredCategories));
+ assertTrue(appender.isIgnored("org.apache.karaf.decanter.collector.log.LogEvent", appender.ignoredCategories));
+ }
+
+ @Test
+ public void testDisabledLocationCategories() {
+ LogAppender appender = new LogAppender();
+
+ ComponentContext componentContext = new ComponentContextMock();
+ componentContext.getProperties().put("location.disabled", "org.apache.karaf.decanter.collector.log.*,test,other");
+
+ appender.activate(componentContext);
+
+ assertEquals("org.apache.karaf.decanter.collector.log.*", appender.locationDisabledCategories[0]);
+ assertEquals("test", appender.locationDisabledCategories[1]);
+ assertEquals("other", appender.locationDisabledCategories[2]);
+
+ assertFalse(appender.isIgnored("org.apache.karaf.decanter.other", appender.locationDisabledCategories));
+ assertTrue(appender.isIgnored("org.apache.karaf.decanter.collector.log", appender.locationDisabledCategories));
+ assertTrue(appender.isIgnored("org.apache.karaf.decanter.collector.log.LogEvent", appender.locationDisabledCategories));
+ }
+
+ @Test
+ public void testDisabledLocationCategoriesAllWildcard() {
+ LogAppender appender = new LogAppender();
+
+ ComponentContext componentContext = new ComponentContextMock();
+ componentContext.getProperties().put("location.disabled", ".*,test,other");
+
+ appender.activate(componentContext);
+
+ assertEquals(".*", appender.locationDisabledCategories[0]);
+ assertEquals("test", appender.locationDisabledCategories[1]);
+ assertEquals("other", appender.locationDisabledCategories[2]);
+
+ assertTrue(appender.isIgnored("org.apache.karaf.decanter.other", appender.locationDisabledCategories));
+ assertTrue(appender.isIgnored("org.apache.karaf.decanter.collector.log", appender.locationDisabledCategories));
+ assertTrue(appender.isIgnored("org.apache.karaf.decanter.collector.log.LogEvent", appender.locationDisabledCategories));
}
private class ComponentContextMock implements ComponentContext {