Java JDBC Appender不写入异常堆栈跟踪

Java JDBC Appender不写入异常堆栈跟踪,java,jakarta-ee,log4j2,Java,Jakarta Ee,Log4j2,我们使用log4j2并有两个Appender:控制台Appender和JDBC Appender 控制台-Appender正确记录异常的完整堆栈跟踪;但是,JDBC-Appender只记录异常本身,没有堆栈跟踪。根据我们的配置,它还应该写入完整跟踪:pattern=“%throwable{50} 这是我们的log4j2.xml <?xml version="1.0" encoding="UTF-8"?> <Configuration package="log4j.test" s

我们使用log4j2并有两个Appender:控制台Appender和JDBC Appender
控制台
-Appender正确记录异常的完整堆栈跟踪;但是,
JDBC
-Appender只记录异常本身,没有堆栈跟踪。根据我们的配置,它还应该写入完整跟踪:
pattern=“%throwable{50}

这是我们的
log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration package="log4j.test" status="trace">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT" ignoreExceptions="false" >
            <PatternLayout pattern="%d{ISO8601} %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <JDBC name="DatabaseAppender" tableName="logentry" ignoreExceptions="false" >
            <ConnectionFactory class="....LoggingConnectionFactory" method="getDatabaseConnection" />
            <Column name="eventDate" isEventTimestamp="true" />
            <Column name="level" pattern="%level" isUnicode="false"/>
            <Column name="logger" pattern="%logger" isUnicode="false"/>
            <Column name="message" pattern="%message" isUnicode="false"/>
            <Column name="exception" pattern="%throwable{50}" isUnicode="false"/>
        </JDBC>
    </Appenders>
    <Loggers>
        <Root level="${env:LOG_LEVEL}">
            <AppenderRef ref="DatabaseAppender"/>
            <AppenderRef ref="ConsoleAppender"/>
        </Root>
    </Loggers>
</Configuration>

怎么了? 这里有一些类似的帖子,但它们的目标是log4j1或不是JDBC Appender。非常感谢您的帮助!提前感谢!

-badera

您认为此配置应捕获完整堆栈跟踪的前50行是正确的。我查看了代码,但找不到任何明显的原因。您可能发现了一个bug。请在Log4j2 JIRA问题跟踪程序中提出此问题

您能否提供更多详细信息:您使用的是什么数据库(和版本)?您希望在其中存储异常的列的SQL类型是什么


另外,您是否在不限制行数的情况下尝试过just
%throwable

谢谢您,Remko!如果我使用just
%throwable
,效果很好!我将提出一个问题。我们使用PostgreSQL 9.4.x和9.5.x(无论是哪一个还是哪一个未成年人,行为都是一样的)。列
异常
的类型是
字符变化
。太好了,很高兴我的回答对您有用!