Spring BootからのHibernate / JPA SQLステートメントの表示
1. 概要
2. JPAクエリのロギング
2.1. 標準出力へ
最も簡単な方法は、クエリを標準出力にダンプすることです。application.propertiesに以下を追加します。
spring.jpa.show-sql=true
SQLを美化またはきれいに印刷するために、次を追加できます。
spring.jpa.properties.hibernate.format_sql=true
これは非常に単純ですが、it’s not recommendedは、ロギングフレームワークを最適化せずに、すべてを標準出力に直接アンロードするためです。
さらに、it doesn’t log the parameters of prepared statements.
2.2. ロガー経由
次に、プロパティファイルでロガーを構成してSQLステートメントをログに記録する方法を見てみましょう。
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
最初の行はSQLクエリを記録し、2番目のステートメントは準備されたステートメントパラメーターを記録します。
pretty printプロパティもこの構成で機能します。
これらのプロパティを設定することにより、logs will be sent to the configured appender。 デフォルトでは、Spring Bootは標準のoutアペンダーでlogbackを使用します。
3. JdbcTemplateクエリのログ
JdbcTemplateを使用するときにステートメントのログを構成するには、次のプロパティが必要です。
logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG
logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE
JPAロギング構成と同様に、最初の行はステートメントのロギング用であり、2行目は準備済みステートメントのパラメーターのロギング用です。
4. 仕組み
SQLステートメントを生成してパラメータを設定するThe Spring / Hibernate classes,、already contain the code for logging them。
ただし、これらのログステートメントのレベルはそれぞれDEBUGとTRACEに設定されており、Spring BootのデフォルトレベルであるINFOよりも低くなっています。
これらのプロパティを追加することにより、これらのロガーを必要なレベルに設定するだけです。
5. 結論
この短い記事では、SpringBootでSQLクエリをログに記録する方法について説明しました。
configure multiple appendersを選択した場合、SQLステートメントと他のログステートメントを異なるログファイルに分割して、状況をクリーンに保つこともできます。