java - JDBC Appender 不写入异常堆栈跟踪

标签 java jakarta-ee log4j2

我们使用 log4j2 并有两个附加程序:Console-Appender 和 JDBC-Appender。
Console-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。非常感谢任何帮助!预先感谢!
- 巴德拉

最佳答案

您是对的,此配置应该捕获完整堆栈跟踪的前 50 行。我查看了代码,但找不到任何可能导致此问题的明显原因。您可能发现了一个错误。请在 Log4j2 JIRA 问题跟踪器上提出此问题。

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

此外,您是否尝试过仅使用 %throwable 而不限制行数?

关于java - JDBC Appender 不写入异常堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42123559/

相关文章:

java - 防止Log4j创建超过5个日志文件

jakarta-ee - 通过名称访问 session bean,无需 JNDI 查找

apache-spark - 集群部署模式下的 spark-submit 将应用程序 ID 获取到控制台

java - 在 Java 变量和方法名中使用下划线

java - 如何在cygwin中从java代码复制文本?

java - 带有 Subversion : build after commit on Windows using Java or Ant 的 Hudson

java - Payara (glassfish) 管理控制台卡在加载中

java - 如何在 eclipse-rcp 应用程序中使用 org.apache.logging.log4j.jul.LogManager?

java - xml解析问题

java - 多个相似面板