You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Remko Popma (JIRA)" <ji...@apache.org> on 2013/11/07 00:17:19 UTC

[jira] [Commented] (LOG4J2-441) logger level configuration does not work correct

    [ https://issues.apache.org/jira/browse/LOG4J2-441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13815430#comment-13815430 ] 

Remko Popma commented on LOG4J2-441:
------------------------------------

In the configuration above, there is one logger without a name. The only logger is "allowed" not to have a name is the root logger. All others MUST have a name. Does the problem still occur if this logger has a name?

To be honest, I don't understand the table with your results yet, but the way I understand levels to work is that the logger and appender-ref act as a filter pipeline: first the logger filters the events, and all events that get through are then filtered again by the level on the appender-ref. (Team, please correct me if I'm wrong.) Does that match the results you are seeing?

> logger level configuration does not work correct
> ------------------------------------------------
>
>                 Key: LOG4J2-441
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-441
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>            Reporter: Andreas Rytina
>         Attachments: log4jtest.zip
>
>
> Configuring the loglevel in the logger does not work in combination with configuring the loglevel at the appender-refs. I analyzed this with the beta9. See the table which lists various loglevel configurations for the 3 loggers. The column format for the table is:
> Column 1-6 are the logger with their level config (level@logger1, level@appender-ref)(level@logger2, level@appender-ref)(level@logger3, level@appender-ref)
> Column 7 is the actual output
> Column 8 is the expected Output
> I also attached the test which can be taken to reproduce the according behaviour. 
> |1|2|3|4|5|6|7|8|
> ||level 1 logger||level 1 appender-ref||level 2 logger||level 2 appender-ref||level 3 logger ||level 3 appender-ref||actual output||expected output||
> |-|-|-|info|debug|debug|Logger3: info logger
> Logger2: info logger
> Logger3: debug logger
> Logger3: warning logger
> Logger2: warning logger|Logger2: info logger
> Logger3: debug logger
> Logger2: debug logger
> Logger3: warning logger
> Logger2: warning logger|
> |-|-|-|info|-|debug|-|Logger2: info logger
> Logger3: debug logger
> Logger2: debug logger
> Logger3: warning logger
> Logger2: warning logger|
> |-|-|info|info|-|debug|-|Logger2: info logger
> Logger3: debug logger
> Logger2: debug logger
> Logger3: warning logger
> Logger2: warning logger|
> |fatal|fatal|info|info|-|debug|-|Logger2: info logger
> Logger3: debug logger
> Logger2: debug logger
> Logger3: warning logger
> Logger2: warning logger|
> |info|info|info|info|-|debug|-|Logger2: info logger
> Logger1: info logger
> Logger3: debug logger
> Logger2: debug logger
> Logger3: warning logger
> Logger2: warning logger
> Logger1: warning logger|
> |debug|debug|info|info| |debug|-|Logger2: info logger
> Logger1: info logger
> Logger3: debug logger
> Logger2: debug logger
> Logger1: debug logger
> Logger3: warning logger
> Logger2: warning logger
> Logger1: warning logger|
> |info|debug|info|info|-|debug|-|Logger2: info logger
> Logger1: info logger
> Logger3: debug logger
> Logger2: debug logger
> Logger3: warning logger
> Logger2: warning logger
> Logger1: warning logger|
> |debug|info|info|info|-|debug|-|Logger2: info logger
> Logger1: info logger
> Logger3: debug logger
> Logger2: debug logger
> Logger3: warning logger
> Logger2: warning logger
> Logger1: warning logger|
> |debug|trace|info|info|-|debug|-|Logger2: info logger
> Logger1: info logger
> Logger3: debug logger
> Logger2: debug logger
> Logger1: debug logger
> Logger3: warning logger
> Logger2: warning logger
> Logger1: warning logger|
> |-|-|info|info|fatal|debug|-|Logger2: info logger
> Logger2: warning logger|
> |-|-|info|info|trace|debug|Logger3: info logger
> Logger2: info logger
> Logger3: debug logger
> Logger3: warning logger
> Logger2: warning logger|Logger3: info logger
> Logger2: info logger
> Logger3: debug logger
> Logger3: warning logger
> Logger2: warning logger|
> |-|-|-|info|trace|debug|Logger3: info logger
> Logger2: info logger
> Logger3: debug logger
> Logger3: warning logger
> Logger2: warning logger|Logger3: info logger
> Logger2: info logger
> Logger3: debug logger
> Logger3: warning logger
> Logger2: warning logger|
> |-|-|info|-|trace|debug|Logger3: info logger
> Logger2: info logger
> Logger3: debug logger
> Logger2: debug logger
> Logger3: warning logger
> Logger2: warning logger
> Logger2: trace logger|Logger3: info logger
> Logger2: info logger
> Logger3: debug logger
> Logger3: warning logger
> Logger2: warning logger|
> Here is the log4j2.xml:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8" ?>
> <configuration>
> 	<appenders>
> 		<console name="TestConsole0">
> 			<PatternLayout pattern="RootLogger: %msg%n"/>
> 		</console>
> 		<console name="TestConsole1">
> 			<PatternLayout pattern="Logger1: %msg%n"/>
> 		</console>
> 		<console name="TestConsole2">
> 			<PatternLayout pattern="Logger2: %msg%n"/>
> 		</console>
> 		<console name="TestConsole3">
> 			<PatternLayout pattern="Logger3: %msg%n"/>
> 		</console>
> 	</appenders>
> 	
> 	<loggers>
> 		<logger name="" >
> 			<appender-ref ref="TestConsole1" />
> 		</logger>
> 		
> 		<logger name ="com.log4jtest" level="info">
> 			<appender-ref ref="TestConsole2" level="info"/>
> 		</logger>
> 		
> 		<logger name ="com.log4jtest.test" level="fatal">
> 			<appender-ref ref="TestConsole3" level="debug"/>
> 		</logger>
> 		
> 		<root level="error">
> 			<appender-ref ref="TestConsole0" level="error"/>
> 		</root>
> 	</loggers>
> </configuration>
> {code}
> And here are the logging calls:
> {code:title=Log4j2LogLevelTest.java|borderStyle=solid}
> package com.log4jtest.test;
> import static org.junit.Assert.*;
> import org.apache.logging.log4j.LogManager;
> import org.apache.logging.log4j.Logger;
> import org.junit.Test;
> public class Log4j2LogLevelTest {
> 	private static final Logger logger = LogManager.getLogger(Log4j2LogLevelTest.class);
> 	
> 	@Test
> 	public void testLogLevel() {
> 		logger.info("info logger");
> 		logger.debug("debug logger");
> 		logger.warn("warning logger");
> 		logger.trace("trace logger");
> 	}
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org