Rupesh created LOG4J2-3479:
------------------------------
Summary: While calling logger.error(ex.getMessage(),ex) causing
stackoverflow and java.lang.OutOfMemoryError: Java heap space with repetitive
call of following stacktrace.
Key: LOG4J2-3479
URL: https://issues.apache.org/jira/browse/LOG4J2-3479
Project: Log4j 2
Issue Type: Bug
Components: Log4j-to-SLF4J
Affects Versions: 2.17.0
Environment: OpenJDK 64-Bit 1.8.0_241
Apache Tomcat 8.5.51
Operating System: Linux Cent OS 2.6.32-754.33.1.el6.centos.plus.x86_64,
2.6.32-754.33.1.el6.x86_64
Reporter: Rupesh
While calling logger.error(ex.getMessage(),ex) causing *stackoverflow and
java.lang.OutOfMemoryError: Java heap space* with repeatative call of following
stacktrace. it is happening randomly on our application. *Log4j2 version is
2.17.0*
{code:java}
at
org.apache.logging.log4j.spi.AbstractLogger.handleLogMessageException(Ljava/lang/Throwable;Ljava/lang/String;Lorg/apache/logging/log4j/message/Message;)V
(AbstractLogger.java:2225)
at
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(Ljava/lang/String;Ljava/lang/StackTraceElement;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
(AbstractLogger.java:2208)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
(AbstractLogger.java:2159)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
(AbstractLogger.java:2142)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessage(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
(AbstractLogger.java:2058)
at
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
(AbstractLogger.java:1931)
at
org.apache.logging.log4j.spi.AbstractLogger.warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
(AbstractLogger.java:2805)
at
org.apache.logging.log4j.spi.AbstractLogger.handleLogMessageException(Ljava/lang/Throwable;Ljava/lang/String;Lorg/apache/logging/log4j/message/Message;)V
(AbstractLogger.java:2225)
at
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(Ljava/lang/String;Ljava/lang/StackTraceElement;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
(AbstractLogger.java:2208)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
(AbstractLogger.java:2159)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
(AbstractLogger.java:2142)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessage(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V
(AbstractLogger.java:2017)
at
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V
(AbstractLogger.java:1983) {code}
Lo4j2.xml configuration file
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config"
packages="custom.appender">
<Appenders>
<Routing name="CustomRouting">
<Routes pattern="${sys:pathToLogfile}">
<Route>
<CustomRollingRandomAccessFile name="FILE"
fileName="${sys:pathToLogfile}/${date:yyyy-MM-dd}.log"
filePattern="${sys:pathToLogfile}/%d{yyyy-MM-dd}.log.gz"
immediateFlush="true" append="true">
<PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss
zzz} | [%t] %C{2} (%F:%L) - %m | %X%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${sys:pathToLogfile}">
<IfFileName glob="//*.log.gz" />
<IfLastModified age="60d" />
</Delete>
</DefaultRolloverStrategy>
</CustomRollingRandomAccessFile>
</Route>
</Routes>
</Routing>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss zzz} [%t]
%C{2} (%F:%L) - %m | %X%n" />
</Console>
</Appenders>
<Loggers>
<Root level="ERROR" includeLocation="true" >
<AppenderRef ref="CustomRouting">
<ThreadContextMapFilter onMatch="DENY" onMismatch="ACCEPT">
<KeyValuePair key="Dir" value="customval" />
</ThreadContextMapFilter>
</AppenderRef>
</Root>
</Loggers>
</Configuration> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)