null Liferay 7でSQLクエリを出力する

こんにちは。おおたにです。

 

Liferayでデータベース周りの問題が発生した場合に、Liferayからデータベースに対してどのようなクエリが発行されているか知りたい場合があります。パフォーマンス関連であればデータベース側でスロークエリログを取得するのも手ですが、今回はLiferayが発行するクエリを出力する方法を紹介します。

標準出力に出力する

標準出力にクエリを出力するためには、<LIFERAY_HOME>/portal-ext.propertiesに以下の設定を追加してLiferayを再起動します。

hibernate.show_sql=true

以上です。とても簡単ですね!

Liferayログに出力する

先ほどの設定でTomcatログ(<LIFERAY_HOME>/tomcat-x.x.xx/logs/catalina.out)にクエリが出力されるようになればよいのですが、Tomcatがコンソール起動している場合は標準出力がコンソールに流れてしまうため、ログにクエリが記録されません。そのような場合は、先の設定に加えて以下の設定を行います。

  1. Liferayに管理者でログイン
  2. コントロールパネル -> 設定 -> サーバ管理 -> ログレベル -> カテゴリを追加する に移動
  3. ロガー名 : org.hibernate.SQL、ログレベル : DEBUGとして保存をクリック

これでLiferayログ(<LIFERAY_HOME>/logs/liferay.yyyy-mm-dd.log)にクエリが記録されるようになります。設定を保存すると即時に反映されるので、Liferay再起動は不要です。一方でLiferayを再起動してしまうとログレベルが元に戻ってしまうため再起動の度に設定が必要です。

 

今回の紹介は以上です。Liferayが発行するクエリを知りたい場合には是非参考にしてください。

RANKING
2021.1.08
2020.12.01
2020.10.30
2020.12.28
2020.12.18