title: log4j2.xml loaded but not applied [JVM argument]
body: <p>I am trying to create a batch using spring batch, spring mvc and spring boot. And I am using log4j2 for logging.</p>
  
  <p>My goal is to load an external log4j2.xml configuration file thanks to JVM arguments like that</p>
  
  <pre><code>-Dlog4j.configurationFile=file://C:\{path}\Workspace\demo-indexeur\config\log4j2.xml
  </code></pre>
  
  <p>Spring boot detect my file (I have no error in the console) and load it but doesn't apply the configuration I put inside the file.</p>
  
  <p>Here is the debug of the load of my configuration file :</p>
  
  <pre><code>2015-05-06 15:36:53,279 DEBUG Starting configuration XmlConfiguration[location=C:\{path}\Workspace\demo-indexeur\config\log4j2.xml]
  2015-05-06 15:36:53,279 DEBUG PluginManager 'Core' found 69 plugins
  2015-05-06 15:36:53,279 DEBUG PluginManager 'Level' found 0 plugins
  2015-05-06 15:36:53,279 DEBUG PluginManager 'Lookup' found 10 plugins
  2015-05-06 15:36:53,279 DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout]. Searching for builder factory method...
  2015-05-06 15:36:53,279 DEBUG Found builder factory method [newBuilder]: public static org.apache.logging.log4j.core.layout.PatternLayout$Builder org.apache.logging.log4j.core.layout.PatternLayout.newBuilder().
  2015-05-06 15:36:53,289 DEBUG TypeConverterRegistry initializing.
  2015-05-06 15:36:53,289 DEBUG PluginManager 'TypeConverter' found 21 plugins
  2015-05-06 15:36:53,299 DEBUG Calling build() on class class org.apache.logging.log4j.core.layout.PatternLayout$Builder for element PatternLayout with params(pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n", Configuration(C:\{path}\Workspace\demo-indexeur\config\log4j2.xml), null, charset="null", alwaysWriteExceptions="null", noConsoleNoAnsi="null", header="null", footer="null")
  2015-05-06 15:36:53,299 DEBUG PluginManager 'Converter' found 33 plugins
  2015-05-06 15:36:53,299 DEBUG Built Plugin[name=layout] OK from builder factory method.
  2015-05-06 15:36:53,299 DEBUG Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.ConsoleAppender]. Searching for builder factory method...
  2015-05-06 15:36:53,299 INFO Log4j appears to be running in a Servlet environment, but there's no log4j-web module available. If you want better web container support, please add the log4j-web JAR to your web archive or server lib directory.
  2015-05-06 15:36:53,299 DEBUG PluginManager 'Converter' found 33 plugins
  2015-05-06 15:36:53,299 DEBUG Jansi is not installed, cannot find org.fusesource.jansi.WindowsAnsiOutputStream
  2015-05-06 15:36:53,299 DEBUG Found builder factory method [newBuilder]: public static org.apache.logging.log4j.core.appender.ConsoleAppender$Builder org.apache.logging.log4j.core.appender.ConsoleAppender.newBuilder().
  2015-05-06 15:36:53,299 DEBUG No PluginVisitorStrategy found on annotation [interface org.apache.logging.log4j.core.config.plugins.validation.constraints.Required]. Ignoring.
  2015-05-06 15:36:53,299 DEBUG Encountered type [org.apache.logging.log4j.core.layout.PatternLayout] which can only be checked for null.
  2015-05-06 15:36:53,309 DEBUG No PluginVisitorStrategy found on annotation [interface org.apache.logging.log4j.core.config.plugins.validation.constraints.Required]. Ignoring.
  2015-05-06 15:36:53,309 DEBUG Encountered type [org.apache.logging.log4j.core.appender.ConsoleAppender$Target] which can only be checked for null.
  2015-05-06 15:36:53,309 DEBUG No PluginVisitorStrategy found on annotation [interface org.apache.logging.log4j.core.config.plugins.validation.constraints.Required]. Ignoring.
  2015-05-06 15:36:53,309 DEBUG Calling build() on class class org.apache.logging.log4j.core.appender.ConsoleAppender$Builder for element Console with params(PatternLayout(%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n), null, target="SYSTEM_OUT", name="Console", follow="null", ignoreExceptions="null")
  2015-05-06 15:36:53,309 DEBUG Jansi is not installed, cannot find org.fusesource.jansi.WindowsAnsiOutputStream
  2015-05-06 15:36:53,309 DEBUG Built Plugin[name=appender] OK from builder factory method.
  2015-05-06 15:36:53,309 DEBUG Building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin]. Searching for builder factory method...
  2015-05-06 15:36:53,309 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.AppendersPlugin. Going to try finding a factory method instead.
  2015-05-06 15:36:53,309 DEBUG Still building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin]. Searching for factory method...
  2015-05-06 15:36:53,309 DEBUG Found factory method [createAppenders]: public static java.util.concurrent.ConcurrentMap org.apache.logging.log4j.core.config.AppendersPlugin.createAppenders(org.apache.logging.log4j.core.Appender[]).
  2015-05-06 15:36:53,309 DEBUG Calling createAppenders on class org.apache.logging.log4j.core.config.AppendersPlugin for element Appenders with params(={Console})
  2015-05-06 15:36:53,309 DEBUG Built Plugin[name=appenders] OK from factory method.
  2015-05-06 15:36:53,309 DEBUG Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef]. Searching for builder factory method...
  2015-05-06 15:36:53,309 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.AppenderRef. Going to try finding a factory method instead.
  2015-05-06 15:36:53,309 DEBUG Still building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef]. Searching for factory method...
  2015-05-06 15:36:53,309 DEBUG Found factory method [createAppenderRef]: public static org.apache.logging.log4j.core.config.AppenderRef org.apache.logging.log4j.core.config.AppenderRef.createAppenderRef(java.lang.String,org.apache.logging.log4j.Level,org.apache.logging.log4j.core.Filter).
  2015-05-06 15:36:53,309 DEBUG Calling createAppenderRef on class org.apache.logging.log4j.core.config.AppenderRef for element AppenderRef with params(ref="Console", level="null", null)
  2015-05-06 15:36:53,309 DEBUG Built Plugin[name=AppenderRef] OK from factory method.
  2015-05-06 15:36:53,309 DEBUG Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. Searching for builder factory method...
  2015-05-06 15:36:53,309 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger. Going to try finding a factory method instead.
  2015-05-06 15:36:53,309 DEBUG Still building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. Searching for factory method...
  2015-05-06 15:36:53,309 DEBUG Found factory method [createLogger]: public static org.apache.logging.log4j.core.config.LoggerConfig org.apache.logging.log4j.core.config.LoggerConfig$RootLogger.createLogger(java.lang.String,org.apache.logging.log4j.Level,java.lang.String,org.apache.logging.log4j.core.config.AppenderRef[],org.apache.logging.log4j.core.config.Property[],org.apache.logging.log4j.core.config.Configuration,org.apache.logging.log4j.core.Filter).
  2015-05-06 15:36:53,319 DEBUG Calling createLogger on class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger for element Root with params(additivity="null", level="ERROR", includeLocation="null", ={Console}, ={}, Configuration(C:\{path}\Workspace\demo-indexeur\config\log4j2.xml), null)
  2015-05-06 15:36:53,319 DEBUG Built Plugin[name=root] OK from factory method.
  2015-05-06 15:36:53,319 DEBUG Building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin]. Searching for builder factory method...
  2015-05-06 15:36:53,319 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.LoggersPlugin. Going to try finding a factory method instead.
  2015-05-06 15:36:53,319 DEBUG Still building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin]. Searching for factory method...
  2015-05-06 15:36:53,319 DEBUG Found factory method [createLoggers]: public static org.apache.logging.log4j.core.config.Loggers org.apache.logging.log4j.core.config.LoggersPlugin.createLoggers(org.apache.logging.log4j.core.config.LoggerConfig[]).
  2015-05-06 15:36:53,319 DEBUG Calling createLoggers on class org.apache.logging.log4j.core.config.LoggersPlugin for element Loggers with params(={root})
  2015-05-06 15:36:53,319 DEBUG Built Plugin[name=loggers] OK from factory method.
  2015-05-06 15:36:53,319 DEBUG Started configuration XmlConfiguration[location=C:\{path}\Workspace\demo-indexeur\config\log4j2.xml] OK.
  2015-05-06 15:36:53,319 TRACE Stopping org.apache.logging.log4j.core.config.DefaultConfiguration@5b87edb3...
  2015-05-06 15:36:53,319 TRACE AbstractConfiguration stopped 0 AsyncLoggerConfigs.
  2015-05-06 15:36:53,319 TRACE AbstractConfiguration stopped 0 AsyncAppenders.
  2015-05-06 15:36:53,319 TRACE AbstractConfiguration stopped 1 Appenders.
  2015-05-06 15:36:53,319 TRACE AbstractConfiguration stopped 0 Loggers.
  2015-05-06 15:36:53,319 DEBUG Stopped org.apache.logging.log4j.core.config.DefaultConfiguration@5bc79274 OK
  2015-05-06 15:36:53,319 DEBUG Registering MBean org.apache.logging.log4j2:type=sun.misc.Launcher$AppClassLoader@c387f44
  2015-05-06 15:36:53,329 DEBUG Registering MBean org.apache.logging.log4j2:type=sun.misc.Launcher$AppClassLoader@c387f44,component=StatusLogger
  2015-05-06 15:36:53,329 DEBUG Registering MBean org.apache.logging.log4j2:type=sun.misc.Launcher$AppClassLoader@c387f44,component=ContextSelector
  2015-05-06 15:36:53,329 DEBUG Registering MBean org.apache.logging.log4j2:type=sun.misc.Launcher$AppClassLoader@c387f44,component=Loggers,name=
  2015-05-06 15:36:53,329 DEBUG Registering MBean org.apache.logging.log4j2:type=sun.misc.Launcher$AppClassLoader@c387f44,component=Appenders,name=Console
  2015-05-06 15:36:53,329 DEBUG Reconfiguration complete for context[name=sun.misc.Launcher$AppClassLoader@c387f44] at null (org.apache.logging.log4j.core.LoggerContext@72b6cbeb) with optional ClassLoader: null
  2015-05-06 15:36:53,329 DEBUG Shutdown hook enabled. Registering a new one.
  2015-05-06 15:36:53,329 DEBUG LoggerContext[name=sun.misc.Launcher$AppClassLoader@c387f44, org.apache.logging.log4j.core.LoggerContext@7fac633a] started OK.
  2015-05-06 15:36:53,489 DEBUG Using configurationFactory org.apache.logging.log4j.core.config.ConfigurationFactory$Factory@6973bf95
  2015-05-06 15:36:53,489 INFO Log4j appears to be running in a Servlet environment, but there's no log4j-web module available. If you want better web container support, please add the log4j-web JAR to your web archive or server lib directory.
  </code></pre>
  
  <p>When I move the file inside "src/main/resources", it works perfectly but when I try to externalise the file it doesn't.</p>
  
  <p>Here is my xml file :</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;Configuration status="WARN"&gt;
    &lt;Appenders&gt;
      &lt;Console name="Console" target="SYSTEM_OUT"&gt;
        &lt;PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/&gt;
      &lt;/Console&gt;
    &lt;/Appenders&gt;
    &lt;Loggers&gt;
      &lt;Root level="error"&gt;
        &lt;AppenderRef ref="Console"/&gt;
      &lt;/Root&gt;
    &lt;/Loggers&gt;
  &lt;/Configuration&gt;
  </code></pre>
  
  <p>Here are my dependencies :</p>
  
  <pre><code>&lt;!--    Spring Batch --&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
          &lt;artifactId&gt;spring-boot-starter-batch&lt;/artifactId&gt;
          &lt;exclusions&gt;
  &lt;!--            Suppression de SLF4J --&gt;
              &lt;exclusion&gt;
                  &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                  &lt;artifactId&gt;spring-boot-starter-logging&lt;/artifactId&gt;
              &lt;/exclusion&gt;
          &lt;/exclusions&gt;
      &lt;/dependency&gt;
  
  &lt;!--    Spring web--&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
          &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
          &lt;exclusions&gt;
  &lt;!--            Suppression de SLF4J --&gt;
              &lt;exclusion&gt;
                  &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                  &lt;artifactId&gt;spring-boot-starter-logging&lt;/artifactId&gt;
              &lt;/exclusion&gt;
          &lt;/exclusions&gt;
      &lt;/dependency&gt;
  
  &lt;!--    Utilisation de LOG4J2 --&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
          &lt;artifactId&gt;spring-boot-starter-log4j2&lt;/artifactId&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
          &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
          &lt;scope&gt;test&lt;/scope&gt;
      &lt;/dependency&gt;
  </code></pre>
  
  <p>Can someone tell me why it doesn't work when I externalize the file?
  Thank you for your help.</p>