Я отслеживаю сгенерированные операторы 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 в файл журнала при сохранении привязок значений параметров?