2012-03-08

MyBatis 3.1.0 ログ出力設定の変更:選択的ロギング

MyBatis 3.1.0 ではログレベルをより細かい単位(パッケージ、Mapper、ネームスペース、ステートメント)で設定できるようになり、これに伴ってログ出力の設定方法が変更されています。

バージョン 3.0.x 以前で実行されるクエリの内容や結果を出力する場合、 log4j では下記のように設定していました。


log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

3.1.0 で同様の設定を行う場合は、Mapper を含むパッケージに対してログレベルを設定します(上記の設定は不要となります)。例えば Mapper が org.mybatis.example というパッケージ以下に格納されている場合は下記のようになります。


log4j.logger.org.mybatis.example=DEBUG

さらに細かく、例えばあるステートメントのログだけ出力したい場合は下記のように設定します。


log4j.logger.org.mybatis.example.BlogMapper.selectBlog=DEBUG

必要なクエリだけ出力できるので、本番環境でのログ出力など、より柔軟に対応できるようになります。

ただ、従来のようにステートメント(java.sql.PreparedStatement, java.sql.Statement)と結果(java.sql.ResultSet)のログレベルを別々に指定するといった設定は今のところできません。 バージョン 3.1.1 で改善されました。

MyBatis オンラインマニュアル:ロギング