Fix: log4j example: set logger level to prevent unexpected level inheritance
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Thu, 26 May 2016 22:05:12 +0000 (18:05 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 26 May 2016 22:13:38 +0000 (18:13 -0400)
BSF or other jars can ship with log4j.properties file embedded. This
causes problem when launching application with a general class path (e.g
/usr/share/java/*) since log4j will look for a property 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
etc.).

Link: https://issues.apache.org/jira/browse/BSF-24
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
doc/examples/java-log4j/Hello.java

index 083ec12ab32953dd0618bff46a69bbfec067a4c3..99bfe08fce45dd33cbed928972e5f7466c21da4c 100644 (file)
@@ -23,6 +23,7 @@ import java.io.IOException;
 
 import org.apache.log4j.Logger;
 import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Level;
 
 import org.lttng.ust.agent.LTTngAgent;
 
@@ -37,6 +38,16 @@ public class Hello
 
        public static void main(String args[]) throws Exception
        {
+               /*
+                * 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
+                */
+               helloLog.setLevel(Level.ALL);
+
                BasicConfigurator.configure();
                lttngAgent = LTTngAgent.getLTTngAgent();
 
This page took 0.025293 seconds and 4 git commands to generate.