2017-02-08 6 views
1

Мы используем log4j2 и имеем два приложения: Console -Appender и JDBC -Appender.
Console -Appender правильный журнал полный стек следы исключений; однако, JDBC -Appender делает запись только самого исключения, без трассировки стека. Согласно нашей конфигурации, он также должен написать полный след: pattern="%throwable{50}JDBC Appender не пишет трассировку стека исключений

Вот наш 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

ответ

1

Вы правы, что эта конфигурация должна захватывать первые 50 строк полной трассировки стека. Я посмотрел на код, но не мог найти ничего очевидного, что могло бы вызвать это. Возможно, вы обнаружили ошибку. Пожалуйста, поднимите это на трекер Log4j2 JIRA.

Можете ли вы предоставить более подробную информацию: какую базу данных (и версию) вы используете? Что такое тип SQL столбца, в котором вы хотите сохранить исключение?

Кроме того, вы пробовали только %throwable, не ограничивая количество строк?

+0

Спасибо, Ремко! если я использую только '% throwable', он отлично работает! Я подниму вопрос. Мы используем PostgreSQL 9.4.x и 9.5.x (неважно, какой из них и какие несовершеннолетние, поведение одинаковое). Тип столбца «исключение» - «символ, меняющийся». – badera

+0

Отлично, рад, что мой ответ был вам полезен! –

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

  • Нет связанных вопросов^_^