4

特定のクラスのSQLステートメントのログを無効にする方法はありますか?

一般的に問題のないlog4jロガーを定義することでSQLステートメントのロギングを有効にしました。残念ながら、非常に頻繁に呼び出され、コンソールに非常に多くの出力を生成するクラスが1つあります。単一のクラスのみのロギングを無効にしたいのですが。これは可能ですか?

4

2 に答える 2

0

たとえば、log4j1で各クラスがログに記録するレベルを定義することは可能です。

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

微調整することはできません。

ロギングをより細かく制御するには、log4j2をアップグレードする必要があります。

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 に答える