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