6

java.sql.Connection を持つスーパークラスがあります。接続を使用して選択を実行する多くのサブクラスがあります。

接続を介して実行されたすべてのステートメントをインターセプトし、実行された SQL をログに記録する必要があります。

どうすればいいですか?

4

1 に答える 1

9

log4jdbcを使用します。これは、すべての SQL をログに記録し、SQL とパラメーターを基になるドライバーに渡すプロキシ JDBC ドライバーです。そうすれば、コードでログを認識する必要さえありません。ログはすべてサードパーティのライブラリに含まれています。

構成は、実際のドライバーの代わりにプロキシを使用するように JDBC 接続文字列を変更し、log4jdbc に実際の JDBC ドライバーが何であるかを伝えることで構成されます。次に、log4j 構成でログ カテゴリを選択して、ログに記録する対象を指定します。SQL、タイミング情報、接続の開閉イベント、および結果セットの内容を取得できます。

それがどのように機能するかの詳細な説明が必要な場合は、Jack Shirazi の著書Java Performance Tuningを参照してください。JDBC の章に、プロキシ ドライバを構築する拡張例があります。

于 2013-04-12T17:44:47.673 に答える