[ https://issues.apache.org/jira/browse/LOG4J2-441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14038679#comment-14038679 ]
Jan Winter commented on LOG4J2-441: ----------------------------------- As I know is this issue affected to beta4 version. >From my point of view was the major misunderstanding here {noformat} <logger name ="com.log4jtest.test" level="fatal"> <appender-ref ref="TestConsole3" level="debug"/> </logger> {noformat} Which "com.log4jtest.test"-LoggerConfig.level will be setted for TestConsole3? - DEBUG or FATAL? > 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 > Assignee: Ralph Goers > Attachments: log4j2.xml.row1, log4j2.xml.row10, log4j2.xml.row11, > log4j2.xml.row12, log4j2.xml.row13, log4j2.xml.row2, log4j2.xml.row3, > log4j2.xml.row4, log4j2.xml.row5, log4j2.xml.row6, log4j2.xml.row7, > log4j2.xml.row8, log4j2.xml.row9 > > > 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 > For instance the first row of the table shows a logging result which I not > expected in that way. You can take log4j2.xml.row1 to reproduce the first > row. The first logger is named "com". The second logger is named > "com.log4jtest" and the third logger is named "com.log4jtest.test". This > looks like a bug in log4j 2.0: > Logger1 considers the levels {info, debug, warning} but not the level trace. > {color:red}What is the default level, if there is no level defined at the > logger header and also not at the appender-ref?{color} Here it seems that the > Logger1 has the level debug as default which is not clear for me. For me it > would make sense if the default level is either OFF or ALL when there is no > explicit level set. But either way there should be a clear rule for this. The > other rows are showing similar inconsistent logging 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 > Logger1: info logger > Logger3: debug logger > Logger1: debug logger > Logger3: warning logger > Logger2: warning logger > Logger1: warning logger|Logger3: info logger > Logger2: info logger > Logger3: debug logger > Logger3: warning logger > Logger2: warning logger| > |-|-|-|info|-|debug|no output|Logger3: info logger > Logger2: info logger > Logger3: debug logger > Logger3: warning logger > Logger2: warning logger| > |-|-|info|info|-|debug|no output|Logger3: info logger > Logger2: info logger > Logger3: debug logger > Logger3: warning logger > Logger2: warning logger| > |fatal|fatal|info|info|-|debug|no output|Logger3: info logger > Logger2: info logger > Logger3: debug logger > Logger3: warning logger > Logger2: warning logger| > |info|info|info|info|-|debug|no output|Logger3: info logger > Logger2: info logger > Logger1: info logger > Logger3: debug logger > Logger3: warning logger > Logger2: warning logger > Logger1: warning logger| > |debug|debug|info|info| |debug|no output|Logger3: info logger > Logger2: info logger > Logger1: info logger > Logger3: debug logger > Logger3: warning logger > Logger2: warning logger > Logger1: warning logger| > |info|debug|info|info|-|debug|no output|Logger3: info logger > Logger2: info logger > Logger1: info logger > Logger3: debug logger > Logger3: warning logger > Logger2: warning logger > Logger1: warning logger| > |debug|info|info|info|-|debug|no output|Logger3: info logger > Logger2: info logger > Logger1: info logger > Logger3: debug logger > Logger3: warning logger > Logger2: warning logger > Logger1: warning logger| > |debug|trace|info|info|-|debug|no output|Logger3: info logger > Logger2: info logger > Logger1: info logger > Logger3: debug logger > Logger3: warning logger > Logger2: warning logger > Logger1: warning logger| > |-|-|info|info|fatal|debug|no output|Logger2: info logger > Logger2: warning logger| > |-|-|info|info|trace|debug|Logger3: info logger > Logger2: info logger > Logger1: info logger > Logger3: debug logger > Logger1: debug logger > Logger3: warning logger > Logger2: warning logger > Logger1: warning logger > Logger1: trace logger|Logger3: info logger > Logger2: info logger > Logger3: debug logger > Logger2: warning logger| > |-|-|-|info|trace|debug|Logger3: info logger > Logger2: info logger > Logger1: info logger > Logger3: debug logger > Logger1: debug logger > Logger3: warning logger > Logger2: warning logger > Logger1: warning logger > Logger1: trace logger|Logger3: info logger > Logger2: info logger > Logger3: debug logger > Logger2: warning logger| > |-|-|info|-|trace|debug|Logger3: info logger > Logger2: info logger > Logger1: info logger > Logger3: debug logger > Logger1: debug logger > Logger3: warning logger > Logger2: warning logger > Logger1: warning logger > Logger1: trace logger|Logger3: info logger > Logger2: info logger > Logger3: debug 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="com" > > <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.2#6252) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org