【问题标题】:Log Exception Stack Trace with Log4j JDBCAppender使用 Log4j JDBCAppender 记录异常堆栈跟踪
【发布时间】:2013-06-21 18:16:07
【问题描述】:

我们在项目中使用 log4j JDBCAppender。但是,它无法将异常堆栈跟踪记录到数据库。我在网上搜索,我得到了 %throwable,但这不适用于 JDBCAppender。有人可以帮我做这件事吗?

这是我的自定义 Appender 代码,我将其用作 JDBCAppender 的相同代码,并稍作修改

public void append(LoggingEvent event) {
        ArrayList buffer = new ArrayList();

        buffer.add(event);

        flushBuffer(buffer);
    }



    public void flushBuffer(ArrayList buffer) {

        for (Iterator i = buffer.iterator(); i.hasNext();) {
            try {
                LoggingEvent logEvent = (LoggingEvent) i.next();
                String messageRecievied = getLogStatement(logEvent);
                execute(messageRecievied);

            } catch (SQLException e) {
                this.errorHandler.error("Failed to excute sql", e, 2);
            }

        }

    }

我不知道为什么它不包括堆栈跟踪

这是我的 log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 <appender class="com.MyAppender" name="customAppen">
      <layout class="org.apache.log4j.EnhancedPatternLayout">
            <param value="%d[%t] %-5p(%F:&lt;%M&gt;:%L)- %m%n" name="ConversionPattern"/>
        </layout>
    </appender>
 <appender class="org.apache.log4j.AsyncAppender" name="asynchapp">
  <param name="Blocking" value="false"/> 
    <appender-ref ref="customAppen"/>
    </appender>
    <root>
<level value = "INFO"/>
    <appender-ref ref="asynchapp"/>
</root>

【问题讨论】:

    标签: log4j


    【解决方案1】:

    JDBCAppender javadoc 明确表示it does not log exceptions。您必须自己编写自定义附加程序。但我很确定这样的东西已经存在了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 2011-01-18
      • 2011-03-29
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多