3.5. ロギング
Hibernate はさまざまなシステムイベントをログに記録するため、 SLF4J (Simple Logging Facade for Java) を使用します。 SLF4J は、 選択したバインディングに応じてログ出力を複数のロギングフレームワーク (NOP、 Simple、 log4j バージョン 1.2、 JDK 1.4 ロギング、 JCL、 logback) に転送することができます。 ロギングを設定するには、 希望のバインディングの jar ファイル (Log4J の場合は
slf4j-log4j12.jar
) と、 クラスパス上に slf4j-api.jar
が必要となります。 詳細は SLF4J の ドキュメント を参照してください。 Log4j を使用するには、 クラスパスに log4j.properties
を置く必要もあります。 サンプルのプロパティファイルは、 Hibernate の src/
ディレクトリにあります。
Hibernate のログメッセージを理解できるようにしてください。 Hibernate のログはできる限り詳細で、 読みやすいようになっています。 トラブルシューティングでは必須となります。 重要なログのカテゴリは次の通りです。
表3.9 Hibernate ログカテゴリ
カテゴリ | 機能 |
---|---|
org.hibernate.SQL | 実行したすべての SQL(DDL)ステートメントをロギングします。 |
org.hibernate.type | すべての JDBC パラメータをロギングします。 |
org.hibernate.tool. hbm2ddl | 実行したすべての SQL(DDL)ステートメントをロギングします。 |
org.hibernate.pretty | session に関連するすべてのエンティティ(最大20)のフラッシュ時間をロギングします。 |
org.hibernate.cache | すべてのニ次キャッシュの動作をロギングします。 |
org.hibernate. transaction | トランザクションに関連する動作をロギングします。 |
org.hibernate.jdbc | JDBC リソース取得をロギングします。 |
org.hibernate.hql. ast.AST | HQL と SQL の AST のクエリパースをロギングします。 |
org.hibernate.secure | すべての JAAS 分析をロギングします。 |
org.hibernate | すべてをロギングします。 情報量は多くなりますが、 トラブルシューティングには便利です。 |
Hibernate でアプリケーションの開発時には、ほとんどの場合、カテゴリ
org.hibernate.SQL
の debug
を有効にします。 debug
の代わりにプロパティ hibernate.show_sql
を有効にすることもできます。