禁用特定类的Hibernate SQL日志记录

时间:2012-11-16 10:10:40

标签: hibernate log4j

有没有办法禁用特定类的SQL语句记录?

我已经通过定义log4j记录器来启用SQL语句记录,这通常很好。不幸的是,我有一个非常频繁调用的类,它会给控制台带来很多输出。我想禁用仅针对单个类的日志记录。这可能吗?

2 个答案:

答案 0 :(得分:0)

虽然可以定义每个类在log4j 1中记录的级别,例如:

<!-- Suppress success logging from InteractiveAuthenticationSuccessEvent -->
<logger name="org.springframework.security">
    <level value="ERROR"/>
</logger>

无法对其进行微调。

要更好地控制日志记录,您需要升级log4j 2。

在Log4j 2中,您可以使用过滤器:

http://logging.apache.org/log4j/2.x/manual/filters.html

这是使用正则表达式过滤器的配置片段:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="warn" name="MyApp" packages="">
  <appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log"
                 filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
      <RegexFilter regex=".* test .*" onMatch="ACCEPT" onMismatch="DENY"/>
      <PatternLayout>
        <pattern>%d %p %C{1.} [%t] %m%n</pattern>
      </PatternLayout>
      <TimeBasedTriggeringPolicy />
    </RollingFile>
  </appenders>
  <loggers>
    <root level="error">
      <appender-ref ref="RollingFile"/>
    </root>
  </loggers>
</configuration>    

答案 1 :(得分:0)

不,你问的是不可能的。如果您不希望记录特定类(映射到表)但该表连接到另一个表,该怎么办?如果表是连接的一部分,您是否希望日志显示信息?