С log4j, возможно ли скрыть возвращаемые значения JDBC столбца с включенным ведением журнала TRACE org.hibernate.type? - PullRequest
0 голосов
/ 16 декабря 2010

Я отслеживаю сгенерированные операторы SQL Hibernate и их связанные параметры, используя log4j в проекте Seam Framework. В настоящее время у меня есть следующая конфигурация:

JBoss-log4j.xml

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

...

   <appender name="SQL" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.log.dir}/sql.log"/>
      <param name="Append" value="true"/>
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{ABSOLUTE} [%c{1}] %X{username} %m%n"/>
      </layout>
   </appender>

   <category name="org.hibernate">
       <priority value="INFO"/>
       <appender-ref ref="SQL"/>
   </category>

   <category name="org.hibernate.SQL" additivity="false">
       <priority value="DEBUG"/>
       <appender-ref ref="SQL"/>
   </category>

   <category name="org.hibernate.HQL" additivity="false">
       <priority value="DEBUG"/>
       <appender-ref ref="SQL"/>
   </category>

   <category name="org.hibernate.type" additivity="false">
       <priority value="TRACE"/>
       <appender-ref ref="SQL"/>
   </category>

</log4j:configuration>

Проблема в том, что сгенерированный файл sql.log становится слишком громоздким, поскольку при каждом посещении страницы в журнал добавляется не менее 100 КБ текста. Я хотел бы отфильтровать сообщения JDBC для «возврата в виде столбца» и вместо этого отслеживать только запросы INSERT / UPDATE, но не могу найти такую ​​опцию в документации Hibernate или log4j. Удаление этих строк с использованием ручного процесса создания сценариев нежелательно, так как я хочу уменьшить количество операций чтения / записи на диске на веб-сервере.

Можно ли предотвратить добавление этих возвращенных значений JDBC запросов SELECT в файл журнала при сохранении привязок значений параметров?

1 Ответ

1 голос
/ 17 февраля 2011

К сожалению, оба оператора регистрации:

binding '...' to parameter: ...

и

returning '...' as column: ...

происходят из одного класса org.hibernate.type.NullableType и регистрируются на одном уровне TRACE.Это означает, что вы не можете просто отфильтровать последний оператор журнала, оставив первый без изменений.

Однако, если вы используете Logback , фильтры могут прийти кспасение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...