特定のクラスのSQLステートメントのログを無効にする方法はありますか?
一般的に問題のないlog4jロガーを定義することでSQLステートメントのロギングを有効にしました。残念ながら、非常に頻繁に呼び出され、コンソールに非常に多くの出力を生成するクラスが1つあります。単一のクラスのみのロギングを無効にしたいのですが。これは可能ですか?
たとえば、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>
いいえ、あなたが求めるものは不可能です。特定のクラス (テーブルにマップされている) のログを記録したくないが、そのテーブルが別のテーブルに結合されている場合はどうでしょう。テーブルが結合の一部である場合、ログに情報を表示しますか?