Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Log4J2 AppenderLoggingException NoSuchMethodError StackLocatorUtil.getCurrentStackTrace()

Tags:

java

log4j2

As soon as an exception/error occurs and is supposed to be logged, I get the following error/stack trace:

org.apache.logging.log4j.core.appender.AppenderLoggingException: java.lang.NoSuchMethodError: 'java.util.Deque org.apache.logging.log4j.util.StackLocatorUtil.getCurrentStackTrace()'
   at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:165)
   at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:134)
   at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:125)
   at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:89)
   at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:675)
   at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:633)
   at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:616)
   at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:552)
   at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
   at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
   at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
   at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
   at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
   at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
   at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
   at org.apache.logging.log4j.spi.AbstractLogger.fatal(AbstractLogger.java:1063)

the next at is whatever called Logger#fatal/error(String,Throwable)

Java 11, Log4J 2.17.2 (-core and -api), project built using Gradle. removing Multi-Release: true from build.gradle doesn't seem to fix the issue (only adds the, to be expected, Reflection.getCallerClass() warning)

What am I missing?

like image 555
itsTyrion Avatar asked Mar 10 '26 08:03

itsTyrion


1 Answers

Turns out a library had the dependency Log4J-api 2.17.1 (but not -core), my gradle file specified Log4J-core 2.17.2 so the older -api version overrid the latest one. Apparently, from 2.17.1 to .2, StackLocatorUtil.getCurrentStackTrace()'s return was changed from Stack to Deque.

like image 115
itsTyrion Avatar answered Mar 11 '26 21:03

itsTyrion



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!