[ https://issues.apache.org/jira/browse/LOG4J2-219?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13641332#comment-13641332 ]
Remko Popma commented on LOG4J2-219: ------------------------------------ Underlying cause: BaseConfiguration will not connect appenders to Loggers if no root element is present. Instead, if no root element is present, it will create a default root element and connect it to a default Console appender. A status logger warning is emitted: "No Root logger was configured, using default". Further processing is skipped and other configured logger elements are not considered. Logger elements will only be connected to their appenders if a root element exists. (see o.a.l.l.c.c.BaseConfiguration.doConfigure() from line 199) I'm not sure what to do with this. The code essentially says that a root element is mandatory. The documentation does not say that anywhere (or did I miss something?). True, all examples have a root element, but those are just examples... Should we change the code or change the docs? > Named logger without root logger ends up with empty Appenders map - does not > log anything > ----------------------------------------------------------------------------------------- > > Key: LOG4J2-219 > URL: https://issues.apache.org/jira/browse/LOG4J2-219 > Project: Log4j 2 > Issue Type: Bug > Components: Core > Affects Versions: 2.0-beta5 > Reporter: Remko Popma > > On the log4j-user mailing list, Peter DePasquale gave this test case that > demonstrates the problem: > Note that the configuration has no root logger, but only contains a named > logger. > In a debugger I found that the LoggerConfig for "logtest.LogTest" ended up > with an empty "appenders" Map<String, AppenderControl<?>>. The appenderRefs > list did contain an AppenderRef object but in #callAppenders there are no > AppenderControl objects to call... > (Sorry, I have been unable to find out the underlying cause yet.) > <?xml version="1.0" encoding="UTF-8"?> > <configuration status="warn"> > <appenders> > <File name="tracelog" fileName="trace-log.txt" > immediateFlush="true" append="false"> > <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level > %logger{36} - %msg%n"/> > </File> > </appenders> > > <loggers> > <logger name="logtest.LogTest" level="trace"> > <appender-ref ref="tracelog"/> > </logger> > </loggers> > </configuration> > package logtest; > import org.apache.logging.log4j.LogManager; > import org.apache.logging.log4j.Logger; > import org.apache.logging.log4j.core.config.XMLConfigurationFactory; > public class LogTest { > public static void main(String[] args) { > > System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY, > "log4j2-roottest.xml"); > Logger logger = LogManager.getLogger(LogTest.class); > logger.trace("This is a trace message"); > logger.info("This is an info message"); > logger.warn("This is a warning message"); > } > } -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org