[lttng-dev] [PATCH lttng-ust] log4j example: systematically set the logger level to prevent unexpected level inheritance

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Thu May 26 22:14:29 UTC 2016


Merged into master, 2.8, 2.7, thanks!

Mathieu

----- On May 26, 2016, at 6:05 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 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 et.).
> 
> https://issues.apache.org/jira/browse/BSF-24
> 
> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
> doc/examples/java-log4j/Hello.java | 11 +++++++++++
> 1 file changed, 11 insertions(+)
> 
> diff --git a/doc/examples/java-log4j/Hello.java
> b/doc/examples/java-log4j/Hello.java
> index a477e33..496c840 100644
> --- a/doc/examples/java-log4j/Hello.java
> +++ b/doc/examples/java-log4j/Hello.java
> @@ -26,6 +26,7 @@ import java.io.IOException;
> 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;
> 
> /**
> @@ -64,6 +65,16 @@ public class Hello {
> 	 *             command line.
> 	 */
> 	public static void main(String args[]) throws IOException {
> +
> +		/* 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
> +		 */
> +		HELLO_LOG.setLevel(Level.ALL);
> +
> 		/* Start with the default Log4j configuration, which logs to console */
> 		BasicConfigurator.configure();
> 
> --
> 2.7.4

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


More information about the lttng-dev mailing list