0

プロジェクトでは 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>

4

1 に答える 1

1

JDBCAppender javadocには明示的に記載されてit does not log exceptionsいます。カスタムアペンダーを自分で作成する必要があります。しかし、私はそのようなものがすでに存在していることを確信しています。

于 2013-06-22T09:34:39.730 に答える