Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-3678

Log4j2 starts again after LogManager.shutdown()

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.21.1
    • None
    • Core
    • None
    • Java: 21.0.1; OpenJDK 64-Bit Server VM 21.0.1+12-29
      Runtime: OpenJDK Runtime Environment 21.0.1+12-29
      System: Linux version 5.11.0-38-generic running on amd64; UTF-8; en_US (nb)

    Description

      The problem occurs when Log4j2 is used with JUL + when it is necessary to use shutdownHook in an application. So, this is java code:

      import java.io.IOException;
      import java.io.InputStream;
      import java.util.logging.Level;
      import java.util.logging.LogManager;
      import java.util.logging.Logger;
      
      public class Mavenproject10 {
      
          static {
              try (InputStream is = Mavenproject10.class.getClassLoader().
                      getResourceAsStream("logging.properties")) {
                  LogManager.getLogManager().readConfiguration(is);
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      
          private static final Logger logger = Logger.getLogger(Mavenproject10.class.getName());
      
          public static void main(String[] args) {
              org.apache.logging.log4j.jul.LogManager weNeedThisClass = null;
              logger.log(Level.SEVERE, "That is very bad");
              org.apache.logging.log4j.LogManager.shutdown();
              System.exit(0);
          }
      }
      

      This is logging.properties:

      handlers= java.util.logging.ConsoleHandler
      .level= ALL
      java.util.logging.ConsoleHandler.level = ALL
      java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
      java.util.logging.SimpleFormatter.format=%4$s: %5$s [%1$tc]%n
      

      This is log4j2.xml:

      <?xml version="1.0" encoding="UTF-8"?>
      <Configuration status="trace" shutdownHook="disable">
          <Appenders>
      	<Console name="Console" target="SYSTEM_OUT">
      	    <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %highlight{[%level]}{FATAL=red blink, ERROR=red bold, WARN=yellow bold, INFO=magenta bold, DEBUG=green bold, TRACE=blue bold} %logger{36} - %msg%n" disableAnsi="false"/>
              </Console>
              <File name="File" fileName="/home/pavel/Temp/mavenproject10.log" immediateFlush="true" append="false">
                  <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{[%level]}{FATAL=bright_red bold, ERROR=red bold, WARN=yellow bold, INFO=blue bold, DEBUG=green bold, TRACE=magenta bold} [%t] %logger{36} - %msg%n" disableAnsi="false"/>
              </File>
          </Appenders>
      
          <Loggers>
              <Root level="debug">
                  <AppenderRef ref="File"/>
                  <AppenderRef ref="Console"/>
              </Root>
          </Loggers>
      </Configuration>
      

      This is how we run program:

      java -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -jar mavenproject10-1.0.0.jar
      

      This is the output:

      DEBUG StatusConsoleListener null null initializing configuration XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml]
      DEBUG StatusConsoleListener PluginManager 'Core' found 131 plugins
      DEBUG StatusConsoleListener PluginManager 'Level' found 0 plugins
      DEBUG StatusConsoleListener PluginManager 'Lookup' found 16 plugins
      DEBUG StatusConsoleListener Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
      TRACE StatusConsoleListener TypeConverterRegistry initializing.
      DEBUG StatusConsoleListener PluginManager 'TypeConverter' found 26 plugins
      DEBUG StatusConsoleListener PatternLayout$Builder(pattern="%d{HH:mm:ss.SSS} [%t] %highlight{[%level]}{FATAL=red blink, ERROR=red bold, WARN=yellow bold, INFO=magenta bold, DEBUG=green bold, TRACE=blue bold} %logger{36} - %msg%n", PatternSelector=null, Configuration(jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml), Replace=null, charset="null", alwaysWriteExceptions="null", disableAnsi="false", noConsoleNoAnsi="null", header="null", footer="null")
      DEBUG StatusConsoleListener PluginManager 'Converter' found 45 plugins
      DEBUG StatusConsoleListener Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.ConsoleAppender].
      DEBUG StatusConsoleListener ConsoleAppender$Builder(target="SYSTEM_OUT", follow="null", direct="null", bufferedIo="null", bufferSize="null", immediateFlush="null", ignoreExceptions="null", PatternLayout(%d{HH:mm:ss.SSS} [%t] %highlight{[%level]}{FATAL=red blink, ERROR=red bold, WARN=yellow bold, INFO=magenta bold, DEBUG=green bold, TRACE=blue bold} %logger{36} - %msg%n), name="Console", Configuration(jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml), Filter=null, ={})
      DEBUG StatusConsoleListener Starting OutputStreamManager SYSTEM_OUT.false.false
      DEBUG StatusConsoleListener Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
      DEBUG StatusConsoleListener PatternLayout$Builder(pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{[%level]}{FATAL=bright_red bold, ERROR=red bold, WARN=yellow bold, INFO=blue bold, DEBUG=green bold, TRACE=magenta bold} [%t] %logger{36} - %msg%n", PatternSelector=null, Configuration(jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml), Replace=null, charset="null", alwaysWriteExceptions="null", disableAnsi="false", noConsoleNoAnsi="null", header="null", footer="null")
      DEBUG StatusConsoleListener Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.FileAppender].
      DEBUG StatusConsoleListener FileAppender$Builder(fileName="/home/pavel/Temp/mavenproject10.log", append="false", locking="null", advertise="null", advertiseUri="null", createOnDemand="null", filePermissions="null", fileOwner="null", fileGroup="null", bufferedIo="null", bufferSize="null", immediateFlush="true", ignoreExceptions="null", PatternLayout(%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{[%level]}{FATAL=bright_red bold, ERROR=red bold, WARN=yellow bold, INFO=blue bold, DEBUG=green bold, TRACE=magenta bold} [%t] %logger{36} - %msg%n), name="File", Configuration(jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml), Filter=null, ={})
      DEBUG StatusConsoleListener Starting FileManager /home/pavel/Temp/mavenproject10.log
      DEBUG StatusConsoleListener Building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin].
      DEBUG StatusConsoleListener createAppenders(={Console, File})
      DEBUG StatusConsoleListener Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef].
      DEBUG StatusConsoleListener createAppenderRef(ref="File", level="null", Filter=null)
      DEBUG StatusConsoleListener Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef].
      DEBUG StatusConsoleListener createAppenderRef(ref="Console", level="null", Filter=null)
      DEBUG StatusConsoleListener Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger].
      DEBUG StatusConsoleListener LoggerConfig$RootLogger$Builder(additivity="null", level="DEBUG", levelAndRefs="null", includeLocation="null", ={File, Console}, ={}, Configuration(jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml), Filter=null)
      DEBUG StatusConsoleListener Building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin].
      DEBUG StatusConsoleListener createLoggers(={root})
      DEBUG StatusConsoleListener Configuration XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml] initialized
      DEBUG StatusConsoleListener Starting configuration XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml]
      DEBUG StatusConsoleListener Started configuration XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml] OK.
      TRACE StatusConsoleListener Stopping org.apache.logging.log4j.core.config.DefaultConfiguration@cb51256...
      TRACE StatusConsoleListener DefaultConfiguration notified 1 ReliabilityStrategies that config will be stopped.
      TRACE StatusConsoleListener DefaultConfiguration stopping root LoggerConfig.
      TRACE StatusConsoleListener DefaultConfiguration notifying ReliabilityStrategies that appenders will be stopped.
      TRACE StatusConsoleListener DefaultConfiguration stopping remaining Appenders.
      DEBUG StatusConsoleListener Shutting down OutputStreamManager SYSTEM_OUT.false.false-1
      DEBUG StatusConsoleListener OutputStream closed
      DEBUG StatusConsoleListener Shut down OutputStreamManager SYSTEM_OUT.false.false-1, all resources released: true
      DEBUG StatusConsoleListener Appender DefaultConsole-1 stopped with status true
      TRACE StatusConsoleListener DefaultConfiguration stopped 1 remaining Appenders.
      TRACE StatusConsoleListener DefaultConfiguration cleaning Appenders from 1 LoggerConfigs.
      DEBUG StatusConsoleListener Stopped org.apache.logging.log4j.core.config.DefaultConfiguration@cb51256 OK
      TRACE StatusConsoleListener Call to LogManager.getLogger(javax.management)
      TRACE StatusConsoleListener Call to LogManager.getLogger(javax.management.mbeanserver)
      TRACE StatusConsoleListener Call to LogManager.getLogger(javax.management.mlet)
      TRACE StatusConsoleListener Call to LogManager.getLogger(javax.management.monitor)
      TRACE StatusConsoleListener Call to LogManager.getLogger(javax.management.timer)
      TRACE StatusConsoleListener Call to LogManager.getLogger(javax.management.notification)
      TRACE StatusConsoleListener Call to LogManager.getLogger(javax.management.relation)
      TRACE StatusConsoleListener Call to LogManager.getLogger(javax.management.modelmbean)
      TRACE StatusConsoleListener Call to LogManager.getLogger(javax.management.misc)
      TRACE StatusConsoleListener Reregistering MBeans after reconfigure. Selector=org.apache.logging.log4j.core.selector.ClassLoaderContextSelector@1e683a3e
      TRACE StatusConsoleListener Reregistering context (1/1): '4f2410ac' org.apache.logging.log4j.core.LoggerContext@7f3b84b8
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=StatusLogger'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=ContextSelector'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=Loggers,name=*'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=Appenders,name=*'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=AsyncAppenders,name=*'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=AsyncLoggerRingBuffer'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=Loggers,name=*,subtype=RingBuffer'
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac,component=StatusLogger
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac,component=ContextSelector
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac,component=Loggers,name=
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac,component=Appenders,name=Console
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac,component=Appenders,name=File
      TRACE StatusConsoleListener Using default SystemClock for timestamps.
      DEBUG StatusConsoleListener org.apache.logging.log4j.core.util.SystemClock supports precise timestamps.
      TRACE StatusConsoleListener Using DummyNanoClock for nanosecond timestamps.
      DEBUG StatusConsoleListener Reconfiguration complete for context[name=4f2410ac] at URI jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml (org.apache.logging.log4j.core.LoggerContext@7f3b84b8) with optional ClassLoader: null
      DEBUG StatusConsoleListener LoggerContext[name=4f2410ac, org.apache.logging.log4j.core.LoggerContext@7f3b84b8] started OK.
      02:22:40.245 [main] [ERROR] com.foo.mavenproject10.Mavenproject10 - That is very bad
      DEBUG StatusConsoleListener Stopping LoggerContext[name=4f2410ac, org.apache.logging.log4j.core.LoggerContext@7f3b84b8]...
      TRACE StatusConsoleListener Unregistering 1 MBeans: [org.apache.logging.log4j2:type=4f2410ac]
      TRACE StatusConsoleListener Unregistering 1 MBeans: [org.apache.logging.log4j2:type=4f2410ac,component=StatusLogger]
      TRACE StatusConsoleListener Unregistering 1 MBeans: [org.apache.logging.log4j2:type=4f2410ac,component=ContextSelector]
      TRACE StatusConsoleListener Unregistering 1 MBeans: [org.apache.logging.log4j2:type=4f2410ac,component=Loggers,name=]
      TRACE StatusConsoleListener Unregistering 2 MBeans: [org.apache.logging.log4j2:type=4f2410ac,component=Appenders,name=Console, org.apache.logging.log4j2:type=4f2410ac,component=Appenders,name=File]
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=AsyncAppenders,name=*'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=AsyncLoggerRingBuffer'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=Loggers,name=*,subtype=RingBuffer'
      TRACE StatusConsoleListener Stopping XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml]...
      TRACE StatusConsoleListener XmlConfiguration notified 2 ReliabilityStrategies that config will be stopped.
      TRACE StatusConsoleListener XmlConfiguration stopping 1 LoggerConfigs.
      TRACE StatusConsoleListener XmlConfiguration stopping root LoggerConfig.
      TRACE StatusConsoleListener XmlConfiguration notifying ReliabilityStrategies that appenders will be stopped.
      TRACE StatusConsoleListener XmlConfiguration stopping remaining Appenders.
      DEBUG StatusConsoleListener Shutting down FileManager /home/pavel/Temp/mavenproject10.log
      DEBUG StatusConsoleListener OutputStream closed
      DEBUG StatusConsoleListener Shut down FileManager /home/pavel/Temp/mavenproject10.log, all resources released: true
      DEBUG StatusConsoleListener Appender File stopped with status true
      DEBUG StatusConsoleListener Shutting down OutputStreamManager SYSTEM_OUT.false.false
      DEBUG StatusConsoleListener OutputStream closed
      DEBUG StatusConsoleListener Shut down OutputStreamManager SYSTEM_OUT.false.false, all resources released: true
      DEBUG StatusConsoleListener Appender Console stopped with status true
      TRACE StatusConsoleListener XmlConfiguration stopped 2 remaining Appenders.
      TRACE StatusConsoleListener XmlConfiguration cleaning Appenders from 2 LoggerConfigs.
      DEBUG StatusConsoleListener Stopped XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml] OK
      DEBUG StatusConsoleListener Stopped LoggerContext[name=4f2410ac, org.apache.logging.log4j.core.LoggerContext@7f3b84b8] with status true
      TRACE StatusConsoleListener Call to LogManager.getLogger(java.lang.Runtime)
      DEBUG StatusConsoleListener PluginManager 'Lookup' found 16 plugins
      DEBUG StatusConsoleListener PluginManager 'Converter' found 45 plugins
      DEBUG StatusConsoleListener Starting OutputStreamManager SYSTEM_OUT.false.false-2
      DEBUG StatusConsoleListener Starting LoggerContext[name=4f2410ac, org.apache.logging.log4j.core.LoggerContext@d5b810e]...
      DEBUG StatusConsoleListener Reconfiguration started for context[name=4f2410ac] at URI null (org.apache.logging.log4j.core.LoggerContext@d5b810e) with optional ClassLoader: null
      DEBUG StatusConsoleListener Using configurationFactory org.apache.logging.log4j.core.config.ConfigurationFactory$Factory@43dac38f
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.properties] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.properties] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.properties] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.properties] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.yml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.yml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.yml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.yml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.yaml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.yaml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.yaml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.yaml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.json] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.json] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.json] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.json] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.jsn] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.jsn] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.jsn] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.jsn] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.xml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.xml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.xml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test4f2410ac.xml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test.properties] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test.properties] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.properties] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.properties] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test.yml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test.yml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.yml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.yml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test.yaml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test.yaml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.yaml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.yaml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test.json] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test.json] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.json] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.json] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test.jsn] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test.jsn] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.jsn] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.jsn] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2-test.xml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2-test.xml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.xml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2-test.xml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.properties] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.properties] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.properties] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.properties] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.yml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.yml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.yml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.yml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.yaml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.yaml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.yaml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.yaml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.json] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.json] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.json] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.json] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.jsn] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.jsn] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.jsn] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.jsn] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.xml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.xml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.xml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j24f2410ac.xml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2.properties] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2.properties] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2.properties] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2.properties] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2.yml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2.yml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2.yml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2.yml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2.yaml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2.yaml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2.yaml] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2.yaml] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2.json] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2.json] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2.json] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2.json] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2.jsn] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      TRACE StatusConsoleListener Trying to find [log4j2.jsn] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2.jsn] using jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac class loader.
      TRACE StatusConsoleListener Trying to find [log4j2.jsn] using ClassLoader.getSystemResource().
      TRACE StatusConsoleListener Trying to find [log4j2.xml] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4f2410ac.
      DEBUG StatusConsoleListener uri does not represent a local file: jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml
      DEBUG StatusConsoleListener PluginManager 'Lookup' found 16 plugins
      DEBUG StatusConsoleListener Closing JarURLInputStream sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@54bff557
      DEBUG StatusConsoleListener null null initializing configuration XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml]
      DEBUG StatusConsoleListener PluginManager 'Core' found 131 plugins
      DEBUG StatusConsoleListener PluginManager 'Level' found 0 plugins
      DEBUG StatusConsoleListener PluginManager 'Lookup' found 16 plugins
      DEBUG StatusConsoleListener Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
      DEBUG StatusConsoleListener PatternLayout$Builder(pattern="%d{HH:mm:ss.SSS} [%t] %highlight{[%level]}{FATAL=red blink, ERROR=red bold, WARN=yellow bold, INFO=magenta bold, DEBUG=green bold, TRACE=blue bold} %logger{36} - %msg%n", PatternSelector=null, Configuration(jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml), Replace=null, charset="null", alwaysWriteExceptions="null", disableAnsi="false", noConsoleNoAnsi="null", header="null", footer="null")
      DEBUG StatusConsoleListener PluginManager 'Converter' found 45 plugins
      DEBUG StatusConsoleListener Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.ConsoleAppender].
      DEBUG StatusConsoleListener ConsoleAppender$Builder(target="SYSTEM_OUT", follow="null", direct="null", bufferedIo="null", bufferSize="null", immediateFlush="null", ignoreExceptions="null", PatternLayout(%d{HH:mm:ss.SSS} [%t] %highlight{[%level]}{FATAL=red blink, ERROR=red bold, WARN=yellow bold, INFO=magenta bold, DEBUG=green bold, TRACE=blue bold} %logger{36} - %msg%n), name="Console", Configuration(jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml), Filter=null, ={})
      DEBUG StatusConsoleListener Starting OutputStreamManager SYSTEM_OUT.false.false
      DEBUG StatusConsoleListener Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
      DEBUG StatusConsoleListener PatternLayout$Builder(pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{[%level]}{FATAL=bright_red bold, ERROR=red bold, WARN=yellow bold, INFO=blue bold, DEBUG=green bold, TRACE=magenta bold} [%t] %logger{36} - %msg%n", PatternSelector=null, Configuration(jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml), Replace=null, charset="null", alwaysWriteExceptions="null", disableAnsi="false", noConsoleNoAnsi="null", header="null", footer="null")
      DEBUG StatusConsoleListener Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.FileAppender].
      DEBUG StatusConsoleListener FileAppender$Builder(fileName="/home/pavel/Temp/mavenproject10.log", append="false", locking="null", advertise="null", advertiseUri="null", createOnDemand="null", filePermissions="null", fileOwner="null", fileGroup="null", bufferedIo="null", bufferSize="null", immediateFlush="true", ignoreExceptions="null", PatternLayout(%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{[%level]}{FATAL=bright_red bold, ERROR=red bold, WARN=yellow bold, INFO=blue bold, DEBUG=green bold, TRACE=magenta bold} [%t] %logger{36} - %msg%n), name="File", Configuration(jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml), Filter=null, ={})
      DEBUG StatusConsoleListener Starting FileManager /home/pavel/Temp/mavenproject10.log
      DEBUG StatusConsoleListener Building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin].
      DEBUG StatusConsoleListener createAppenders(={Console, File})
      DEBUG StatusConsoleListener Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef].
      DEBUG StatusConsoleListener createAppenderRef(ref="File", level="null", Filter=null)
      DEBUG StatusConsoleListener Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef].
      DEBUG StatusConsoleListener createAppenderRef(ref="Console", level="null", Filter=null)
      DEBUG StatusConsoleListener Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger].
      DEBUG StatusConsoleListener LoggerConfig$RootLogger$Builder(additivity="null", level="DEBUG", levelAndRefs="null", includeLocation="null", ={File, Console}, ={}, Configuration(jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml), Filter=null)
      DEBUG StatusConsoleListener Building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin].
      DEBUG StatusConsoleListener createLoggers(={root})
      DEBUG StatusConsoleListener Configuration XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml] initialized
      DEBUG StatusConsoleListener Starting configuration XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml]
      DEBUG StatusConsoleListener Started configuration XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml] OK.
      TRACE StatusConsoleListener Stopping org.apache.logging.log4j.core.config.DefaultConfiguration@2ed2d9cb...
      TRACE StatusConsoleListener DefaultConfiguration notified 1 ReliabilityStrategies that config will be stopped.
      TRACE StatusConsoleListener DefaultConfiguration stopping root LoggerConfig.
      TRACE StatusConsoleListener DefaultConfiguration notifying ReliabilityStrategies that appenders will be stopped.
      TRACE StatusConsoleListener DefaultConfiguration stopping remaining Appenders.
      DEBUG StatusConsoleListener Shutting down OutputStreamManager SYSTEM_OUT.false.false-2
      DEBUG StatusConsoleListener OutputStream closed
      DEBUG StatusConsoleListener Shut down OutputStreamManager SYSTEM_OUT.false.false-2, all resources released: true
      DEBUG StatusConsoleListener Appender DefaultConsole-2 stopped with status true
      TRACE StatusConsoleListener DefaultConfiguration stopped 1 remaining Appenders.
      TRACE StatusConsoleListener DefaultConfiguration cleaning Appenders from 1 LoggerConfigs.
      DEBUG StatusConsoleListener Stopped org.apache.logging.log4j.core.config.DefaultConfiguration@2ed2d9cb OK
      TRACE StatusConsoleListener Reregistering MBeans after reconfigure. Selector=org.apache.logging.log4j.core.selector.ClassLoaderContextSelector@1e683a3e
      TRACE StatusConsoleListener Reregistering context (1/1): '4f2410ac' org.apache.logging.log4j.core.LoggerContext@d5b810e
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=StatusLogger'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=ContextSelector'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=Loggers,name=*'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=Appenders,name=*'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=AsyncAppenders,name=*'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=AsyncLoggerRingBuffer'
      TRACE StatusConsoleListener Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=4f2410ac,component=Loggers,name=*,subtype=RingBuffer'
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac,component=StatusLogger
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac,component=ContextSelector
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac,component=Loggers,name=
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac,component=Appenders,name=Console
      DEBUG StatusConsoleListener Registering MBean org.apache.logging.log4j2:type=4f2410ac,component=Appenders,name=File
      TRACE StatusConsoleListener Using DummyNanoClock for nanosecond timestamps.
      DEBUG StatusConsoleListener Reconfiguration complete for context[name=4f2410ac] at URI jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml (org.apache.logging.log4j.core.LoggerContext@d5b810e) with optional ClassLoader: null
      DEBUG StatusConsoleListener LoggerContext[name=4f2410ac, org.apache.logging.log4j.core.LoggerContext@d5b810e] started OK.
      FINE: Runtime.exit() called with status: 0 [Mon Nov 20 02:22:40 EET 2023]
      

      Please, note the following piece:

      DEBUG StatusConsoleListener Shutting down FileManager /home/pavel/Temp/mavenproject10.log
      DEBUG StatusConsoleListener OutputStream closed
      DEBUG StatusConsoleListener Shut down FileManager /home/pavel/Temp/mavenproject10.log, all resources released: true
      DEBUG StatusConsoleListener Appender File stopped with status true
      DEBUG StatusConsoleListener Shutting down OutputStreamManager SYSTEM_OUT.false.false
      DEBUG StatusConsoleListener OutputStream closed
      DEBUG StatusConsoleListener Shut down OutputStreamManager SYSTEM_OUT.false.false, all resources released: true
      DEBUG StatusConsoleListener Appender Console stopped with status true
      TRACE StatusConsoleListener XmlConfiguration stopped 2 remaining Appenders.
      TRACE StatusConsoleListener XmlConfiguration cleaning Appenders from 2 LoggerConfigs.
      DEBUG StatusConsoleListener Stopped XmlConfiguration[location=jar:file:/home/pavel/Temp/TestBin/mavenproject10-1.0.0.jar!/log4j2.xml] OK
      DEBUG StatusConsoleListener Stopped LoggerContext[name=4f2410ac, org.apache.logging.log4j.core.LoggerContext@7f3b84b8] with status true
      TRACE StatusConsoleListener Call to LogManager.getLogger(java.lang.Runtime)
      DEBUG StatusConsoleListener PluginManager 'Lookup' found 16 plugins
      DEBUG StatusConsoleListener PluginManager 'Converter' found 45 plugins
      DEBUG StatusConsoleListener Starting OutputStreamManager SYSTEM_OUT.false.false-2
      DEBUG StatusConsoleListener Starting LoggerContext[name=4f2410ac, org.apache.logging.log4j.core.LoggerContext@d5b810e]...
      DEBUG StatusConsoleListener Reconfiguration started for context[name=4f2410ac] at URI null (org.apache.logging.log4j.core.LoggerContext@d5b810e) with optional ClassLoader: null
      DEBUG StatusConsoleListener Using configurationFactory org.apache.logging.log4j.core.config.ConfigurationFactory$Factory@43dac38f
      
      

      As you see log4j2 closes log file but later it starts it again. In the result log file length is 0 - it is empty. The reason of the problem shows this stack:

      LoggerContext.reconfigure:688	
      LoggerContext.reconfigure:711	
      LoggerContext.start:253	
      Log4jContextFactory.getContext:155	
      Log4jContextFactory.getContext:47	
      LogManager.getContext:196	
      AbstractLoggerAdapter.getContext:137	
      Hidden Source Calls	
      AbstractLoggerAdapter.getLogger:47	
      Hidden Source Calls	
      LogManager.getLogger:95	
      LogManager.demandSystemLogger:574	
      LogManager$LoggingProviderAccess.demandLoggerFor:2727	
      LoggingProviderImpl.demandJULLoggerFor:412	
      LoggingProviderImpl.demandLoggerFor:438	
      DefaultLoggerFinder.getLogger:159	
      LazyLoggers.getLoggerFromFinder:391	
      LazyLoggers.getLazyLogger:446	
      LazyLoggers.getLogger:416	
      System.getLogger:1822	
      Shutdown.logRuntimeExit:177	
      Shutdown.exit:160	
      Runtime.exit:188	
      System.exit:1916
      
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            Pavel_K Pavel_K
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: