4

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

我通过定义一个一般来说很好的 log4j 记录器来启用 SQL 语句记录。不幸的是,我有一个类被非常频繁地调用并产生大量的控制台输出。我想仅禁用单个类的日志记录。这可能吗?

4

2 回答 2

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>    
于 2012-11-16T10:13:28.043 回答
0

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

于 2012-11-16T12:04:49.400 回答