Repository: karaf-decanter Updated Branches: refs/heads/master b4d2d8cdb -> 07da48c1a
[KARAF-4495] Add custom fields support in all collectors Project: http://git-wip-us.apache.org/repos/asf/karaf-decanter/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf-decanter/commit/07da48c1 Tree: http://git-wip-us.apache.org/repos/asf/karaf-decanter/tree/07da48c1 Diff: http://git-wip-us.apache.org/repos/asf/karaf-decanter/diff/07da48c1 Branch: refs/heads/master Commit: 07da48c1a0cff246bebe3b0fc2a3edca13c49a16 Parents: b4d2d8c Author: Jean-Baptiste Onofré <[email protected]> Authored: Tue Apr 19 16:49:00 2016 +0200 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Tue Apr 19 16:49:00 2016 +0200 ---------------------------------------------------------------------- .../camel/DecanterTraceEventHandler.java | 10 ++++++++++ ...f.decanter.collector.eventadmin-framework.cfg | 5 ++++- ...karaf.decanter.collector.eventadmin-karaf.cfg | 5 ++++- .../collector/eventadmin/EventCollector.java | 17 +++++++++++++++++ .../decanter/collector/log/LogAppender.java | 19 +++++++++++++++++++ .../collector/log/socket/SocketCollector.java | 17 ++++++++++++++--- .../decanter/collector/rest/RestCollector.java | 9 +++++++++ .../collector/system/SystemCollector.java | 10 +++++----- 8 files changed, 82 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/07da48c1/collector/camel-tracer/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandler.java ---------------------------------------------------------------------- diff --git a/collector/camel-tracer/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandler.java b/collector/camel-tracer/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandler.java index 6040bd7..a9fa32a 100644 --- a/collector/camel-tracer/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandler.java +++ b/collector/camel-tracer/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterTraceEventHandler.java @@ -45,7 +45,17 @@ public class DecanterTraceEventHandler implements TraceEventHandler { data.put("routeId", exchange.getFromRouteId()); data.put("shortExchangeId", extractShortExchangeId(exchange)); data.put("exchangePattern", exchange.getPattern().toString()); + for (String property : exchange.getProperties().keySet()) { + if (property.startsWith("decanter.")) { + data.put(property.substring("decanter.".length()), exchange.getProperties().get(property)); + } + } data.put("properties", exchange.getProperties().isEmpty() ? null : exchange.getProperties().toString()); + for (String header : exchange.getIn().getHeaders().keySet()) { + if (header.startsWith("decanter.")) { + data.put(header.substring("decanter.".length()), exchange.getIn().getHeader(header)); + } + } data.put("inHeaders", exchange.getIn().getHeaders().isEmpty() ? null : exchange.getIn().getHeaders().toString()); data.put("inBody", MessageHelper.extractBodyAsString(exchange.getIn())); data.put("inBodyType", MessageHelper.getBodyTypeName(exchange.getIn())); http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/07da48c1/collector/eventadmin/src/main/cfg/org.apache.karaf.decanter.collector.eventadmin-framework.cfg ---------------------------------------------------------------------- diff --git a/collector/eventadmin/src/main/cfg/org.apache.karaf.decanter.collector.eventadmin-framework.cfg b/collector/eventadmin/src/main/cfg/org.apache.karaf.decanter.collector.eventadmin-framework.cfg index 128b64d..ab7ffa9 100644 --- a/collector/eventadmin/src/main/cfg/org.apache.karaf.decanter.collector.eventadmin-framework.cfg +++ b/collector/eventadmin/src/main/cfg/org.apache.karaf.decanter.collector.eventadmin-framework.cfg @@ -3,4 +3,7 @@ # # EventAdmin topics to listen -event.topics=org/osgi/framework/* \ No newline at end of file +event.topics=org/osgi/framework/* + +# Custom fields +#key=value \ No newline at end of file http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/07da48c1/collector/eventadmin/src/main/cfg/org.apache.karaf.decanter.collector.eventadmin-karaf.cfg ---------------------------------------------------------------------- diff --git a/collector/eventadmin/src/main/cfg/org.apache.karaf.decanter.collector.eventadmin-karaf.cfg b/collector/eventadmin/src/main/cfg/org.apache.karaf.decanter.collector.eventadmin-karaf.cfg index 0bc9c9d..37b7605 100644 --- a/collector/eventadmin/src/main/cfg/org.apache.karaf.decanter.collector.eventadmin-karaf.cfg +++ b/collector/eventadmin/src/main/cfg/org.apache.karaf.decanter.collector.eventadmin-karaf.cfg @@ -3,4 +3,7 @@ # # EventAdmin topics to listen -event.topics=org/apache/karaf/* \ No newline at end of file +event.topics=org/apache/karaf/* + +# Custom fields +#key=value \ No newline at end of file http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/07da48c1/collector/eventadmin/src/main/java/org/apache/karaf/decanter/collector/eventadmin/EventCollector.java ---------------------------------------------------------------------- diff --git a/collector/eventadmin/src/main/java/org/apache/karaf/decanter/collector/eventadmin/EventCollector.java b/collector/eventadmin/src/main/java/org/apache/karaf/decanter/collector/eventadmin/EventCollector.java index fec06ce..550f089 100644 --- a/collector/eventadmin/src/main/java/org/apache/karaf/decanter/collector/eventadmin/EventCollector.java +++ b/collector/eventadmin/src/main/java/org/apache/karaf/decanter/collector/eventadmin/EventCollector.java @@ -16,6 +16,8 @@ */ package org.apache.karaf.decanter.collector.eventadmin; +import org.osgi.service.component.ComponentContext; +import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import org.osgi.service.event.Event; @@ -35,6 +37,13 @@ public class EventCollector implements EventHandler { private EventAdmin eventAdmin; + private Dictionary<String, Object> properties; + + @Activate + public void activate(ComponentContext context) { + properties = context.getProperties(); + } + @Override public void handleEvent(Event event) { String topic = event.getTopic(); @@ -50,6 +59,14 @@ public class EventCollector implements EventHandler { } catch (Exception e) { // nothing to do } + + // custom fields + Enumeration<String> keys = properties.keys(); + while (keys.hasMoreElements()) { + String key = keys.nextElement(); + data.put(key, properties.get(key)); + } + for (String property : event.getPropertyNames()) { if (property.equals("type")) { if (event.getProperty(property) != null) { http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/07da48c1/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 3d0425d..ca09396 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 @@ -17,6 +17,8 @@ package org.apache.karaf.decanter.collector.log; import java.net.InetAddress; +import java.util.Dictionary; +import java.util.Enumeration; import java.util.HashMap; import java.util.Map; @@ -24,6 +26,8 @@ import org.apache.log4j.MDC; import org.ops4j.pax.logging.spi.PaxAppender; import org.ops4j.pax.logging.spi.PaxLocationInfo; import org.ops4j.pax.logging.spi.PaxLoggingEvent; +import org.osgi.service.component.ComponentContext; +import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import org.osgi.service.event.Event; @@ -45,7 +49,15 @@ public class LogAppender implements PaxAppender { private static final String MDC_IN_LOG_APPENDER = "inLogAppender"; private final static String[] ignoredCategories = {"org.apache.karaf.decanter"}; private final static Logger LOGGER = LoggerFactory.getLogger(LogAppender.class); + + private Dictionary<String, Object> properties; + private EventAdmin dispatcher; + + @Activate + public void activate(ComponentContext context) { + this.properties = context.getProperties(); + } public void doAppend(PaxLoggingEvent event) { try { @@ -80,6 +92,13 @@ public class LogAppender implements PaxAppender { data.put("hostAddress", InetAddress.getLocalHost().getHostAddress()); data.put("hostName", InetAddress.getLocalHost().getHostName()); + // custom fields + Enumeration<String> keys = properties.keys(); + while (keys.hasMoreElements()) { + String key = keys.nextElement(); + data.put(key, properties.get(key)); + } + data.put("timestamp", event.getTimeStamp()); data.put("loggerClass", event.getFQNOfLoggerClass()); data.put("loggerName", event.getLoggerName()); http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/07da48c1/collector/log4j-socket/src/main/java/org/apache/karaf/decanter/collector/log/socket/SocketCollector.java ---------------------------------------------------------------------- diff --git a/collector/log4j-socket/src/main/java/org/apache/karaf/decanter/collector/log/socket/SocketCollector.java b/collector/log4j-socket/src/main/java/org/apache/karaf/decanter/collector/log/socket/SocketCollector.java index 5306136..f6715f2 100644 --- a/collector/log4j-socket/src/main/java/org/apache/karaf/decanter/collector/log/socket/SocketCollector.java +++ b/collector/log4j-socket/src/main/java/org/apache/karaf/decanter/collector/log/socket/SocketCollector.java @@ -25,6 +25,7 @@ import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import java.util.Dictionary; +import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; @@ -47,17 +48,19 @@ import org.slf4j.LoggerFactory; immediate = true ) public class SocketCollector implements Closeable, Runnable { + private static final Logger LOGGER = LoggerFactory.getLogger(SocketCollector.class); private ServerSocket serverSocket; private EventAdmin eventAdmin; private boolean open; private ExecutorService executor; + private Dictionary<String, Object> properties; @SuppressWarnings("unchecked") @Activate public void activate(ComponentContext context) throws IOException { - Dictionary<String, Object> properties = context.getProperties(); - int port = Integer.parseInt(getProperty(properties, "port", "4560")); + this.properties = context.getProperties(); + int port = Integer.parseInt(getProperty(this.properties, "port", "4560")); LOGGER.info("Starting Log4j Socket collector on port {}", port); this.serverSocket = new ServerSocket(port); this.executor = Executors.newFixedThreadPool(1); @@ -95,7 +98,15 @@ public class SocketCollector implements Closeable, Runnable { Map<String, Object> data = new HashMap<>(); data.put("hostAddress", InetAddress.getLocalHost().getHostAddress()); data.put("hostName", InetAddress.getLocalHost().getHostName()); - data.put("timeStamp", event.getTimeStamp()); + + // custom fields + Enumeration<String> keys = properties.keys(); + while (keys.hasMoreElements()) { + String key = keys.nextElement(); + data.put(key, properties.get(key)); + } + + data.put("timestamp", event.getTimeStamp()); data.put("loggerClass", event.getFQNOfLoggerClass()); data.put("loggerName", event.getLoggerName()); data.put("threadName", event.getThreadName()); http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/07da48c1/collector/rest/src/main/java/org/apache/karaf/decanter/collector/rest/RestCollector.java ---------------------------------------------------------------------- diff --git a/collector/rest/src/main/java/org/apache/karaf/decanter/collector/rest/RestCollector.java b/collector/rest/src/main/java/org/apache/karaf/decanter/collector/rest/RestCollector.java index b322644..6852b45 100644 --- a/collector/rest/src/main/java/org/apache/karaf/decanter/collector/rest/RestCollector.java +++ b/collector/rest/src/main/java/org/apache/karaf/decanter/collector/rest/RestCollector.java @@ -43,6 +43,7 @@ import org.slf4j.LoggerFactory; property = "decanter.collector.name=rest" ) public class RestCollector implements Runnable { + private final static Logger LOGGER = LoggerFactory.getLogger(RestCollector.class); private URL url; @@ -91,6 +92,14 @@ public class RestCollector implements Runnable { data.put("type", "rest"); data.put("hostName", url.getHost()); data.put("remote.url", complete); + + // custom fields + Enumeration<String> keys = properties.keys(); + while (keys.hasMoreElements()) { + String key = keys.nextElement(); + data.put(key, properties.get(key)); + } + addUserProperties(data); eventAdmin.postEvent(new Event(toTopic(complete), data)); repeatedError = false; http://git-wip-us.apache.org/repos/asf/karaf-decanter/blob/07da48c1/collector/system/src/main/java/org/apache/karaf/decanter/collector/system/SystemCollector.java ---------------------------------------------------------------------- diff --git a/collector/system/src/main/java/org/apache/karaf/decanter/collector/system/SystemCollector.java b/collector/system/src/main/java/org/apache/karaf/decanter/collector/system/SystemCollector.java index 5d13c11..105d38d 100644 --- a/collector/system/src/main/java/org/apache/karaf/decanter/collector/system/SystemCollector.java +++ b/collector/system/src/main/java/org/apache/karaf/decanter/collector/system/SystemCollector.java @@ -43,17 +43,17 @@ public class SystemCollector implements Runnable { private final static Logger LOGGER = LoggerFactory.getLogger(SystemCollector.class); private EventAdmin eventAdmin; - private Dictionary<String, Object> config; + private Dictionary<String, Object> properties; @SuppressWarnings("unchecked") @Activate public void activate(ComponentContext context) { - this.config = context.getProperties(); + this.properties = context.getProperties(); } @Override public void run() { - if (config != null) { + if (properties != null) { String karafName = System.getProperty("karaf.name"); String hostAddress = null; String hostName = null; @@ -63,13 +63,13 @@ public class SystemCollector implements Runnable { } catch (Exception e) { // nothing to do } - Enumeration<String> keys = config.keys(); + Enumeration<String> keys = properties.keys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); try { if (!key.equals("felix.fileinstall.filename") && !key.equals("service.pid")) { HashMap<String, Object> data = new HashMap<>(); - String command = (String) config.get(key); + String command = (String) properties.get(key); LOGGER.debug("Executing {} ({})", command, key); CommandLine cmdLine = CommandLine.parse(command); DefaultExecutor executor = new DefaultExecutor();
