JdbcLoggerについて

Domaでは、データベースアクセスに関するログ全てについて、それをどう扱うのか(どこにどうやって出力する/しない)を利用者におまかせしています。利用者は、JdbcLoggerインタフェース(http://doma.seasar.org/apidocs/org/seasar/doma/jdbc/JdbcLogger.html)を好きに実装すればいいのです。
利点にはつぎのようなものがあります。

  • 好きなログライブラリを使用できる
  • 情報を取捨選択、または加工して出力できる
  • ログのレベルやカテゴリを好きに決められる
    • たとえば、SQLのログはすべて同じカテゴリで扱うのか、それともDaoごとに別のカテゴリで扱うのかとか


JdbcLoggerインタフェースで重要なメソッドは次のものです。それ以外は無視してしまってもそれほど困らないです(念のために出力しておいても困らないですが)。

  • logDaoMethodEntering
    • Daoメソッドの実行開始をログ出力できます。
  • logDaoMethodExiting
    • Daoメソッドの実行終了をログ出力できます。
  • logDaoMethodThrowing
    • Daoメソッドの例外による実行終了をログ出力できます。
  • logSql
    • Domaが実行するSQLSQLファイルに記述したものも自動生成されたものも)をログ出力できます。自動生成されるものには、UPDATEやINSERTなど更新系のSQLだけでなくシーケンスの採番とかも含まれます。


ローカルトランザクションhttp://doma.seasar.org/apidocs/org/seasar/doma/jdbc/tx/LocalTransaction.html)を使う場合は、これらも出力しておいたほうがいいです(ローカルトランザクションを使わない場合は呼ばれません)。


JdbcLoggerインタフェースの実装クラスは設定クラスで設定することで利用可能になります。

設定方法はJPetStoreの例を見てもらえるとわかると思います。

JPetStoreではCommonsLoggerというcommons-loggingを使用した実装クラスを独自に作成して使っています。