Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
* [lttng-dev] [PATCH lttng-tools] fix: systematically set the logger level to prevent unexpected level inheritance
@ 2016-05-26 22:14 Jonathan Rajotte
  2016-05-27 18:02 ` Mathieu Desnoyers
  0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Rajotte @ 2016-05-26 22:14 UTC (permalink / raw)


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.).

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 | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/tests/regression/ust/java-log4j/JTestLTTng.java b/tests/regression/ust/java-log4j/JTestLTTng.java
index 64a471b..ef97b34 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,17 @@ 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



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [lttng-dev] [PATCH lttng-tools] fix: systematically set the logger level to prevent unexpected level inheritance
  2016-05-26 22:14 [lttng-dev] [PATCH lttng-tools] fix: systematically set the logger level to prevent unexpected level inheritance Jonathan Rajotte
@ 2016-05-27 18:02 ` Mathieu Desnoyers
  2016-05-27 18:14   ` [lttng-dev] [PATCH lttng-tools v2] " Jonathan Rajotte
  0 siblings, 1 reply; 4+ messages in thread
From: Mathieu Desnoyers @ 2016-05-27 18:02 UTC (permalink / raw)


----- On May 26, 2016, at 6: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.).
> 

Perhaps prefix the line below with "Link: "

> https://issues.apache.org/jira/browse/BSF-24

missing newline.

> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
> tests/regression/ust/java-log4j/JTestLTTng.java | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
> 
> diff --git a/tests/regression/ust/java-log4j/JTestLTTng.java
> b/tests/regression/ust/java-log4j/JTestLTTng.java
> index 64a471b..ef97b34 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,17 @@ public class JTestLTTng {
> 		Logger lttng = Logger.getLogger("log4j-event");
> 		Logger lttng2 = Logger.getLogger("log4j-event-2");
> 

Comments start with:

 /*
  * 

Other than those nits, lgtm.

Thanks,

Mathieu

> +		/* 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
> 
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [lttng-dev] [PATCH lttng-tools v2] fix: systematically set the logger level to prevent unexpected level inheritance
  2016-05-27 18:02 ` Mathieu Desnoyers
@ 2016-05-27 18:14   ` Jonathan Rajotte
  2016-05-28  6:57     ` Jérémie Galarneau
  0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Rajotte @ 2016-05-27 18:14 UTC (permalink / raw)


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



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [lttng-dev] [PATCH lttng-tools v2] fix: systematically set the logger level to prevent unexpected level inheritance
  2016-05-27 18:14   ` [lttng-dev] [PATCH lttng-tools v2] " Jonathan Rajotte
@ 2016-05-28  6:57     ` Jérémie Galarneau
  0 siblings, 0 replies; 4+ messages in thread
From: Jérémie Galarneau @ 2016-05-28  6:57 UTC (permalink / raw)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2405 bytes --]

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


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-05-28  6:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-26 22:14 [lttng-dev] [PATCH lttng-tools] fix: systematically set the logger level to prevent unexpected level inheritance Jonathan Rajotte
2016-05-27 18:02 ` Mathieu Desnoyers
2016-05-27 18:14   ` [lttng-dev] [PATCH lttng-tools v2] " Jonathan Rajotte
2016-05-28  6:57     ` Jérémie Galarneau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox