log4jdbcライブラリをアプリケーションサーバのJDBCドライバに設定するときとかのメモ

アプリケーションサーバJDBCプロバイダに設定して、SQLのログ出力を詳細にする方法があるのだが、日本語のまとめっぽいのが見当たらなかったのでメモがてらに書く。

前提条件

使用するライブラリ

オープンソースのものが4つに、実装するものが1つの計5つ。これに各々のデータベースへ接続するライブラリが必要となる。(例:オラクルだとojdbc6.jarとか。)

  1. log4jdbc4-1.2.jar
  2. slf4j-api-1.2.jar
  3. slf4j-jcl-1.2.jar
  4. slf4j-log4j12-1.2.jar
  5. mylog4jdbc.jar
    • 対象のデータベースのJDBCドライバをライブラリとして実装するjarファイル
    • 英語だけど実装はここを参照
    • Gitはここ(参考程度に)
  6. あとは各々のデータベース用のライブラリ
    • ojdbc6.jar とか
    • db2jcc4.jar とか

How do I use it ?

mylog4jdbc.jarの作成

  • IDEにプロジェクトとして取り込んで、「エクスポート」→「Java」→「実行可能なjarファイル」とかでjarファイルとして出力する。依存ライブラリは外出しして、以下に続く方法のなかで設定する。

アプリケーションサーバ

  1. アプリケーションサーバの管理コンソールなどから、上記のライブラリをJDBCプロバイダへ登録する。
  2. Websphereにあったけど「リソース・プロバイダーの分離」にチェックを入れるべきか否かは正直、不明です。m(_ _)m
  3. 実装クラス名の指定は、各データベース用へ実装したmylog4jdbc.jar内の「mylog4jdbc.datasoruce.OracleLoggingConnectionPooledDataSource」などを指定する。

log4j

  1. ロガーの設定を行う。設定例はMylog4jdbcサンプル内に。
    • jdbc.sqlonly   (SQLログ)
    • jdbc.sqltiming  (SQLログ+実行時間)
    • jdbc.audit     (ResultSet以外のAPIログ)
    • jdbc.resultset  (ResultSetのAPIログ)
    • jdbc.connection (Connectionのopen/close時にダンプログ)
    • log4jdbc.debug  (log4jdbcのデバッグログ)
  2. log4jdbc_log4j.propertiesの設定
    • このプロパティファイルをクラスパスが通っているフォルダに格納する。設定例はMylog4jdbcサンプル内に。

以上(`・ω・´)