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

NullPointerException in LogManager.getLogger when called from anonymous class initializer

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • 2.9.0
    • 2.9.1
    • Core
    • None

    Description

      I observed a NullPointerException when calling LogManager.getLogger in the initializer block of an anonymous class, like so:

      		SomeInterface _t = new SomeInterface() {
      			Logger log = LogManager.getLogger();
      			@Override
      			public String someMethod() {
      				log.info("Logging...");
      				return "";
      			}
      		};
      

      This did work fine in 2.8.2, but 2.9.0 gets an NPE:

      java.lang.NullPointerException
      	at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
      	at org.apache.logging.log4j.spi.LoggerRegistry.getLogger(LoggerRegistry.java:125)
      	at org.apache.logging.log4j.core.LoggerContext.getLogger(LoggerContext.java:447)
      	at org.apache.logging.log4j.core.LoggerContext.getLogger(LoggerContext.java:420)
      	at org.apache.logging.log4j.core.LoggerContext.getLogger(LoggerContext.java:60)
      	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
      	at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:537)
      	at LibraryTest$1.<init>(LibraryTest.java:11)
      	at LibraryTest.testGetLoggerFromAnonymousInnerClass_inInitializer(LibraryTest.java:10)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
      	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
      	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
      	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
      	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
      	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
      	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
      	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
      	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
      	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
      	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
      	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
      	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
      	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
      	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
      	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
      	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
      
      

      The error does not occur when I move the call of LogManager.getLogger() down inside of
      someMethod(). It only happens when called from the initializer block.

      Attachments

        1. SomeInterface.java
          0.1 kB
          Mark Arnold
        2. LibraryTest.java
          0.7 kB
          Mark Arnold

        Issue Links

          Activity

            People

              Unassigned Unassigned
              msalists@gmx.net Mark Arnold
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: