X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust-java-agent%2Fjava%2Flttng-ust-agent-log4j%2Forg%2Flttng%2Fust%2Fagent%2Flog4j%2FLttngLog4jAgent.java;h=7677e68ee66e2b2c20773e0675654d24e49f7f46;hb=6364bf2d71babde45ff6bacafca68218801e7d5b;hp=6cb74f91b5516864c1cc35403a1e8ff525cdda38;hpb=c6a5845760ee02e99e5d0609f47706036e257d7f;p=lttng-ust.git diff --git a/liblttng-ust-java-agent/java/lttng-ust-agent-log4j/org/lttng/ust/agent/log4j/LttngLog4jAgent.java b/liblttng-ust-java-agent/java/lttng-ust-agent-log4j/org/lttng/ust/agent/log4j/LttngLog4jAgent.java index 6cb74f91..7677e68e 100644 --- a/liblttng-ust-java-agent/java/lttng-ust-agent-log4j/org/lttng/ust/agent/log4j/LttngLog4jAgent.java +++ b/liblttng-ust-java-agent/java/lttng-ust-agent-log4j/org/lttng/ust/agent/log4j/LttngLog4jAgent.java @@ -17,12 +17,14 @@ package org.lttng.ust.agent.log4j; -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import org.apache.log4j.Appender; +import org.apache.log4j.Category; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.lttng.ust.agent.AbstractLttngAgent; @@ -50,7 +52,7 @@ class LttngLog4jAgent extends AbstractLttngAgent { @Override public Collection listAvailableEvents() { - List ret = new ArrayList(); + Set ret = new TreeSet(); @SuppressWarnings("unchecked") List loggers = Collections.list(LogManager.getCurrentLoggers()); @@ -71,7 +73,7 @@ class LttngLog4jAgent extends AbstractLttngAgent { return ret; } - private static boolean hasLttngAppenderAttached(Logger logger) { + private static boolean hasLttngAppenderAttached(Category logger) { @SuppressWarnings("unchecked") List appenders = Collections.list(logger.getAllAppenders()); for (Appender appender : appenders) { @@ -79,6 +81,22 @@ class LttngLog4jAgent extends AbstractLttngAgent { return true; } } + + /* + * A parent logger, if any, may be connected to an LTTng handler. In + * this case, we will want to include this child logger in the output, + * since it will be accessible by LTTng. + */ + Category parent = logger.getParent(); + if (parent != null) { + return hasLttngAppenderAttached(parent); + } + + /* + * We have reached the root logger and have not found any LTTng handler, + * this event will not be accessible. + */ return false; } + }