1

Hibernate を使用して mysql をクエリするスプリング ベースの webapp があります。を使用してトレース ログを有効にするlog4j.logger.org.hibernate.type=TRACEと、パラメータを含むすべてのクエリがコンソールに記録されます。これにより、検索クエリに対する webapp の速度が低下します。

データベースへの変更のみをログに記録する必要があります。できれば、mysql サーバーに発行された挿入/更新クエリ。これを行う最も簡単で信頼できる方法は何ですか?

挿入クエリのみをログに記録するように log4j に依頼できますか?

P6SPY は、私の目的にはやり過ぎのようです。 http://sourceforge.net/projects/p6spy/

4

2 に答える 2

2

log4j 2 拡張フィルターのサポート。試してRegexFilterみてください。

log4j 1.2.x の場合StringMatchFilter、「エクストラ」パッケージの一部です。

オンラインで見つけた簡単な例を次に示します。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="CustomAppender" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="custom.log"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="5000KB"/>
    <param name="maxBackupIndex" value="5"/> 
          <layout class="org.apache.log4j.PatternLayout">
                  <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p - %m%n" />
          </layout>

          <filter class="org.apache.log4j.varia.StringMatchFilter">
                  <param name="StringToMatch" value="Here is DEBUG" />
                  <param name="AcceptOnMatch" value="true" />
          </filter>
  </appender>

  <root>
    <appender-ref ref="CustomAppender"/>
  </root>
</log4j:configuration>

ただし、AFAIUでは、ワイルドカードを一致させることはできません。これは、あなたの場合は行き止まりを意味すると思います。フィルタのソース コードを掘り下げると、独自のフィルタを簡単に作成できるはずです。

于 2013-01-07T21:48:50.143 に答える