親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

Spring Bootで実行SQLのログを取得する方法


アプリケーション開発でのSQLログ

アプリケーションの開発をしている時、実行されたSQLのログを参照したい場面がありますよね。
想定外のSQLが実行されていないか確認したり、ボトルネックとなっているSQLを確認したりなど。
Spring BootではそのようなSQLの実行ログを簡単に見ることができます。

今回の方法は、Spring Data JPAでデータベースへのアクセスをするものとします。

application.ymlでの設定

手順としては、application.ymlに以下を書き込むだけです。

logging:
  level:
    org:
      hibernate:
        SQL: DEBUG
        type:
          descriptor:
            sql:
              BasicBinder: TRACE

Spring Data JPAは内部的にhibernateで実装されているために、hibernateのログ設定になるんですね。
あとは通常通りサーバを起動させればOKです。
実際に処理を動かしてみると、以下のようなログが出力されることでしょう。

2018-10-16 17:59:53.321 DEBUG 14383 --- [nio-8080-exec-2] org.hibernate.SQL                        : SELECT ...
2018-10-16 17:59:53.321 TRACE 14383 --- [nio-8080-exec-2] o.h.type.descriptor.sql.BasicBinder      : binding parameter [3] as [INTEGER] - [1]

とても簡単ですよね。
O/Rマッパーでのオブジェクトへのアクセスで、実際にどのようなクエリが実行されているのかを確認したい場合などに設定してみてください。


Fire TV Stick

Fire TV Stick

  • 発売日: 2017/04/06
  • メディア: エレクトロニクス
Fire TV Stick 4K - Alexa対応音声認識リモコン付属

Fire TV Stick 4K - Alexa対応音声認識リモコン付属

  • 発売日: 2018/12/12
  • メディア: エレクトロニクス
Fire HD 10 タブレット (10インチHDディスプレイ) 64GB - Alexa搭載

Fire HD 10 タブレット (10インチHDディスプレイ) 64GB - Alexa搭載

  • 発売日: 2017/10/11
  • メディア: エレクトロニクス