我正在使用Seam Framework项目上的log4j跟踪Hibernate生成的SQL语句及其绑定参数。目前我有以下配置:
的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文件变得太笨重,因为每次访问页面时至少会有100k文本附加到日志中。我想过滤掉“作为列返回”的JDBC消息,而只是跟踪INSERT / UPDATE查询,但在Hibernate或log4j的文档中找不到这样的选项。不希望使用手动脚本编制过程删除这些行,因为我想减少Web服务器上的磁盘读/写。
是否可以在保持参数值绑定的同时停止将这些返回的SELECT查询JDBC值添加到日志文件中?