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

NullPointerException in LogManager.getLogger when called from anonymous class initializer

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 2.9.0
    • Fix Version/s: 2.9.1
    • Component/s: Core
    • Labels:
      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. LibraryTest.java
          0.7 kB
          Mark Arnold
        2. SomeInterface.java
          0.1 kB
          Mark Arnold

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                msalists@gmx.net Mark Arnold
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: