WordPressやSymfonyのTipsを中心にアニメや日常の出来事について語ります。
メニュー

【Symfony2】Doctrineが発行したSQLクエリーをモノログで出力する

この記事は約1分32秒で読めます

Symfony MonologでSQLクエリーを出力
ゆっきー
ども、カフェブロガーの悠木です。 お気に入りのカフェはドトールコーヒーです。 14時からの限定スイーツ「シューシャポー」が大好きです。

Symfony2でデータベースから値を取得する時はDoctrine Query Lnguage(DQL)を使用します。
こんな感じに書きます。

IDEを使っていれば入力補完してくれるので、書くときは便利です。

問題点:実行された生のSQLはどうやってみるの?

ただ、生成されたSQLクエリーをコマンドラインで実行したい場合は非常に面倒です。
var_dump($query)で中身を見てもいいんですけれど、DQLなのでそのままSQL実行できません。

毎回var_dump($query)を差し込むのもめんどくさい。
ログファイルを見ても、ごちゃ混ぜでよく分からない。

環境

Symfony: 2.7.5

保留 調査1:EchoSQLLoggerを使ってログを出力する

Doctrine\DBAL\Logging\EchoSQLLoggerというログを出力してくれるクラスがあるようです。

使い方を書いてくれる人もいました。

ただ、生のSQLが見たいときに毎回差し込む必要があるのはちょっとめんどそう…
この方法は試そうと思いましたが保留に…

調査2:モノログでDoctrineだけ指定してSQLを出力させる

SymfonyドキュメントのDoctrineの設定パラメータを見ていたところ、面白いパラメータを見つけました。

英語なので何と書いてあるかわかりませんが、
ここの項目をtrueに変えるとモノログのチャンネルでdoctrineが使えるようになるようです。

解決! config.ymlの設定

私のモノログ設定をご紹介します。

config.yml
config_dev.yml
config_prod.yml

それぞれ下記の内容を追記してください。

prod環境はエラーレベルのログ出力時のみ、エラーログ前後の全てのログを出力するように設定しています。

関連記事

関連記事

  1. symfony2
  2. symfony2
  3. symfony2
  4. symfony2
  5. symfony2
  6. symfony2

PR

カテゴリー