[ 
https://issues.apache.org/jira/browse/LOG4J2-1153?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ElMehdi TAHRI updated LOG4J2-1153:
----------------------------------
    Description: 
I've changed the version of log4j2 from *2.3* to *2.4* in order to load the  
configuration via properties file. So i have converted the xml file, that 
defines only {{<Root>}} in {{<Loggers>}} element, into a properties file. 
This is a preview of the xml file :
{code:xml}
  <Loggers>
      <Root level="info">
         <AppenderRef ref="ConsoleAppender"/>
     </Root>
  </Loggers>
{code}
And this is a preview of the properties file :

{code}
rootLogger.level = info
rootLogger.appenderRefs = console
rootLogger.appenderRef.console.ref = ConsoleAppender
{code}

This configuration throw a null pointer exception :
{noformat}Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
        at 
org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory.getConfiguration(PropertiesConfigurationFactory.java:132)
        at 
org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory.getConfiguration(PropertiesConfigurationFactory.java:44)
        at 
org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:491)
        at 
org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:461)
        at 
org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:257)
        at 
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:493)
        at 
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:510)
        at 
org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:199)
        at 
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:146)
        at 
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:264)
        at org.apache.log4j.Logger$PrivateManager.getContext(Logger.java:59)
        at org.apache.log4j.Logger.getLogger(Logger.java:41)
{noformat}

In order to make this configuration work, i had to add the {{loggers}} 
component and fill the identifiers. My question is why in xml file we can 
define only a root logger and it works fine, and in a properties file it does 
not work ? 
 

  was:
I've changed the version of **log4j2** from 2.3 to 2.4 in order to load the  
configuration via properties file. So i have converted the xml file, that 
defines only {{<Root>}} in {{<Loggers>}} element, into a properties file. 
This is a preview of the xml file :
{code:xml}
  <Loggers>
      <Root level="info">
         <AppenderRef ref="ConsoleAppender"/>
     </Root>
  </Loggers>
{code}
And this is a preview of the properties file :

{code}
rootLogger.level = info
rootLogger.appenderRefs = console
rootLogger.appenderRef.console.ref = ConsoleAppender
{code}

This configuration throw a null pointer exception :
{noformat}Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
        at 
org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory.getConfiguration(PropertiesConfigurationFactory.java:132)
        at 
org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory.getConfiguration(PropertiesConfigurationFactory.java:44)
        at 
org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:491)
        at 
org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:461)
        at 
org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:257)
        at 
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:493)
        at 
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:510)
        at 
org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:199)
        at 
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:146)
        at 
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:264)
        at org.apache.log4j.Logger$PrivateManager.getContext(Logger.java:59)
        at org.apache.log4j.Logger.getLogger(Logger.java:41)
{noformat}

In order to make this configuration work, i had to add the {{loggers}} 
component and fill the identifiers. My question is why in **xml** file we can 
define only a root logger and it works fine, and in a **properties** file it 
does not work ? 
 


> Unable to define only rootLogger in a properties file.
> ------------------------------------------------------
>
>                 Key: LOG4J2-1153
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1153
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Configurators
>    Affects Versions: 2.4
>         Environment: Linux Ubuntu 14.04; Java 1.8; Log4j-2.4
>            Reporter: ElMehdi TAHRI
>              Labels: logger, nullpointerexception, properties, root, xml
>
> I've changed the version of log4j2 from *2.3* to *2.4* in order to load the  
> configuration via properties file. So i have converted the xml file, that 
> defines only {{<Root>}} in {{<Loggers>}} element, into a properties file. 
> This is a preview of the xml file :
> {code:xml}
>   <Loggers>
>       <Root level="info">
>          <AppenderRef ref="ConsoleAppender"/>
>      </Root>
>   </Loggers>
> {code}
> And this is a preview of the properties file :
> {code}
> rootLogger.level = info
> rootLogger.appenderRefs = console
> rootLogger.appenderRef.console.ref = ConsoleAppender
> {code}
> This configuration throw a null pointer exception :
> {noformat}Exception in thread "main" java.lang.ExceptionInInitializerError
> Caused by: java.lang.NullPointerException
>       at 
> org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory.getConfiguration(PropertiesConfigurationFactory.java:132)
>       at 
> org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory.getConfiguration(PropertiesConfigurationFactory.java:44)
>       at 
> org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:491)
>       at 
> org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:461)
>       at 
> org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:257)
>       at 
> org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:493)
>       at 
> org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:510)
>       at 
> org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:199)
>       at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:146)
>       at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
>       at org.apache.logging.log4j.LogManager.getContext(LogManager.java:264)
>       at org.apache.log4j.Logger$PrivateManager.getContext(Logger.java:59)
>       at org.apache.log4j.Logger.getLogger(Logger.java:41)
> {noformat}
> In order to make this configuration work, i had to add the {{loggers}} 
> component and fill the identifiers. My question is why in xml file we can 
> define only a root logger and it works fine, and in a properties file it does 
> not work ? 
>  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to