Cannot print stack trace with Pax Logging 1.10.4 using Pax-Logging-Log4J2 backend due to NoSuchMethodError in ThrowableProxy

15 views
Skip to first unread message

Monica Ron

unread,
Dec 10, 2019, 9:46:53 AM12/10/19
to OPS4J
I can't figure out how to create a Jira ticket in PAXLOGGING. I made an account on Atlassian, but it says I don't have access to Jira on ops4j1.jira.com.

So, with Pax Logging 1.10.2 (using pax-logging-api and pax-logging-log4j2), I can print a stack trace with:

org.apache.logging.log4j.Logger logger = org.apache.logging.log4j.LogManager.getLogger();

try
{
   
// Some code that throws exception.
}
catch (Exception ex)
{
    logger
.error("Some message", ex); // prints stack trace correctly.
}

With Pax Logging 1.10.4 (also using pax-logging-api and pax-logging-log4j2), I cannot print a stack trace. When my code tries to print stack traces, I get this:
java.lang.NoSuchMethodError: org.apache.logging.log4j.core.impl.ThrowableProxy.formatExtendedStackTraceTo(Ljava/lang/StringBuilder;Ljava/util/List;Lorg/apache/logging/log4j/core/pattern/TextRenderer;Ljava/lang/String;Ljava/lang/String;)V
        at org
.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:74)
        at org
.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38)
        at org
.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:341)
        at org
.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:240)
        at org
.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:225)
        at org
.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:59)
        at org
.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:197)
        at org
.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
        at org
.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
        at org
.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:312)
        at org
.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
        at org
.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
        at org
.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
        at org
.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
        at org
.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:543)
        at org
.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:502)
        at org
.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
        at org
.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:412)
        at org
.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
        at org
.apache.logging.log4j.core.Logger.logMessage(Logger.java:154)
        at org
.ops4j.pax.logging.log4j2.internal.PaxLoggerImpl.doLog0(PaxLoggerImpl.java:151)
        at org
.ops4j.pax.logging.log4j2.internal.PaxLoggerImpl.doLog(PaxLoggerImpl.java:144)
        at org
.ops4j.pax.logging.log4j2.internal.PaxLoggerImpl.error(PaxLoggerImpl.java:240)
        at org
.ops4j.pax.logging.internal.TrackingLogger.error(TrackingLogger.java:126)
        at org
.ops4j.pax.logging.log4jv2.Log4jv2Logger.logMessage(Log4jv2Logger.java:147)
        at org
.apache.logging.log4j.spi.AbstractLogger.log(AbstractLogger.java:2102)
        at org
.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2190)
        at org
.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2144)
        at org
.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2127)
        at org
.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2003)
        at org
.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1975)
        at org
.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:742)
        at
my.code.that.calls.logger.error(MyCode.java:71)


Where the last line is the line in my code that calls (I hid the real package and class name in the stack trace above):
    logger.error("Some message", ex);

From what I can see in the 1.10.4 source code, the stated method "org.apache.logging.log4j.core.impl.ThrowableProxy.formatExtendedStackTraceTo" indeed does not exist in Pax Logging Log4J2's version of ThrowableProxy. If I understand Github correctly, the link to the 1.10.4 code is:

Can someone check this out? I am okay with using 1.10.2, though if you do fix the problem with losing track of loggers that I reported in my other post, I'm guessing you would do it based off 1.10.4, not off 1.10.2. Fixing the "losing track of loggers" problem without being able to print stack traces doesn't help me much.

Thanks again,
Monica

Grzegorz Grzybek

unread,
Dec 10, 2019, 10:36:58 AM12/10/19
to op...@googlegroups.com
Hello

I'm keeping your email as unread - I'll answer soon with more details.

regards
Grzegorz Grzybek

--
--
------------------
OPS4J - http://www.ops4j.org - op...@googlegroups.com

---
You received this message because you are subscribed to the Google Groups "OPS4J" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ops4j+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ops4j/2003775d-ae3c-43ec-a20a-e258f5232c01%40googlegroups.com.

Grzegorz Grzybek

unread,
Jan 2, 2020, 2:57:39 AM1/2/20
to op...@googlegroups.com
Hello and happy new year to everyone!

The problem was upgrade to Log4j2 2.12.1 without modifying shaded classes. It was already OK in pax logging 1.11.x+, but for 1.10.x I created (and fixed already) https://ops4j1.jira.com/browse/PAXLOGGING-306. Release soon after I check another problem described in other Monica's email.

best regards
Grzegorz Grzybek

Monica Ron

unread,
Jan 2, 2020, 11:44:53 AM1/2/20
to OPS4J
I built pax-logging-log4j2 based on the committed code for PAXLOGGING-306, and my stack traces got printed correctly. I look forward to a new release of 1.10.x after you fix the other issue.

Thanks!
Monica
Reply all
Reply to author
Forward
0 new messages