2013-06-21 3 views
0

Мы используем log4j JDBCAppender в нашем проекте. Но его невозможно отслеживать трассировку стека исключений в базе данных. Я просмотрел сеть, и я получил% throwable, но это не работает с JDBCAppender. Может ли кто-нибудь помочь мне в этом?Трассировка стека журнала с Log4j 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); 
      } 

     } 

    } 

Я не знаю, почему его не включая stacktraces

Это мой 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> 

ответ

1

JDBCAppender javadoc говорит, что e xplicitly it does not log exceptions. Вы должны сами написать собственный пользователь. Но я уверен, что такая вещь уже существует.

Смежные вопросы