[lttng-dev] [PATCH lttng-tools v2] fix: systematically set the logger level to prevent unexpected level inheritance

Jérémie Galarneau jeremie.galarneau at efficios.com
Sat May 28 06:57:11 UTC 2016


Good catch! Merged in master, stable-2.8 and stable-2.7.

Thanks!
Jérémie

On Fri, May 27, 2016 at 2:14 PM, Jonathan Rajotte
<jonathan.rajotte-julien at efficios.com> wrote:
> BSF or other jars can ship with log4j.properties file embedded. This causes
> problem when launching an application with a general class path (e.g
> /usr/share/java/*) since log4j will look for a configuration file in all loaded
> jars. If any contains directive for the root logger it will affect any logger
> with no level who are directly under the root logger. This could result in an
> unexpected behaviour (e.g no events triggered et.).
>
> Link: https://issues.apache.org/jira/browse/BSF-24
>
> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
>  tests/regression/ust/java-log4j/JTestLTTng.java | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/tests/regression/ust/java-log4j/JTestLTTng.java b/tests/regression/ust/java-log4j/JTestLTTng.java
> index 64a471b..80103df 100644
> --- a/tests/regression/ust/java-log4j/JTestLTTng.java
> +++ b/tests/regression/ust/java-log4j/JTestLTTng.java
> @@ -23,6 +23,7 @@ import java.lang.Integer;
>  import org.apache.log4j.Appender;
>  import org.apache.log4j.BasicConfigurator;
>  import org.apache.log4j.Logger;
> +import org.apache.log4j.Level;
>  import org.lttng.ust.agent.log4j.LttngLogAppender;
>
>  public class JTestLTTng {
> @@ -40,6 +41,18 @@ public class JTestLTTng {
>                 Logger lttng = Logger.getLogger("log4j-event");
>                 Logger lttng2 = Logger.getLogger("log4j-event-2");
>
> +               /*
> +                * Set lowest level to make sure all event levels are logged.
> +                * Any jar can override the default log4j rootLogger level
> +                * and a logger with no explicit level defaults to the non-null
> +                * parent level. Events could be ignored if the inherited value
> +                * is to low.
> +                * e.g BSF  -> https://issues.apache.org/jira/browse/BSF-24
> +                */
> +
> +               lttng.setLevel(Level.ALL);
> +               lttng2.setLevel(Level.ALL);
> +
>                 int nrIter = Integer.parseInt(args[0]);
>                 int waitTime = Integer.parseInt(args[1]);
>                 int fire_debug_tp = 0;
> --
> 2.7.4
>



-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list