SQLクエリーをログに出力する
SQLのクエリーをデバッグするには、Debug Kitを使用すればできますが、デバッグログと一緒に出したいのでやり方を調査してみました。
別々のログやビューでみるのもいいですが、秒単位で実行される処理もどちらが先に実行されたのかなどわかりやすくなるので、いいかなと個人的に思っています。
明示的に実行SQLをデバッグする
モデル操作(find, save, deleteなど)の後に以下のコードを挿入すると実行SQLを(デバッグ)ログに出力させることができます。
$this->log( $this->[Model]->getDataSource()->getLog(), LOG_DEBUG);
出力先は自由に設定して下さい。
暗黙的に実行SQLをデバッグする
DataSourcesをオーバーライドさせます。
MySQLの場合
1. MysqlLog.phpを作成(名前は自由に)
// \app\Model\Datasource\Database\MysqlLog.php
<?php
App::uses( 'Mysql', 'Model/Datasource/Database');
class MysqlLog extends Mysql {
function logQuery( $sql, $params = array()) {
parent::logQuery( $sql);
if (Configure::read('Cake.logQuery')) {
$this->log( $this->_queriesLog, LOG_DEBUG); // SQLの実行詳細
// $this->log( $sql, LOG_DEBUG); // SQLクエリーのみ
}
}
}
?>
2. datasourceを変更
// \app\Config\database.php
// 'datasource' => 'Database/Mysql',
'datasource' => 'Database/MysqlLog',
3. 出力するフラグを設定
出力させるさせないを設定します。以下を追加すると出力されるようになります。
// \app\Config\core.php Configure::write( 'Cake.logQuery', 1);
上記を削除すれば、出力させなくできます。
参考
Vladimir Bilyov - Logging sql queries into file in CakePHP 2
関連記事
-
-
CSS/JSをひとまとめにして軽量化するプラグイン「Minify plugin for CakePHP」
「Minify plugin for CakePHP」は、インクルードするCSSもしくはJSファイルをひとまとめにしてキャッシュ化してくれるプラグインです。 導入 ダウンロード・解凍し
-
-
パス定数と変更方法やURLの取得
CakePHPは基本的にはディレクトリそのまま配置することで構築が可能ではありますが、設定パスを変更することでセキュリティに考慮した構成にすることや運用性をもたせたものにすることが可能になります。
-
-
独自のバリデーションルールを作成
CakePHPで組み込みバリデーションルールをつくる方法は、正規表現を定義する方法と独自メソッドを定義する方法の2つがあるようです。 参考 Custom Validation Rules 正規
-
-
テーブルからランダムにデータを取り出す(find)
CakePHPでテーブルから特定件数のレコードをランダムに取得するには以下のように指定するとできます。 $this->data = $this->Bulkdata->find( 'all',
-
-
Jsヘルパーを使用してAjax更新
更新処理でページ遷移を伴う場合、ページ全体をレスポンスするのに対して、Ajax処理ではページの一部のレスポンスが可能となるためサーバからの通信量を抑えることが可能となります。デモ head
-
-
DebugKitを導入
定番のブログチュートリアルをこなして、定番のDebugKitを導入してみました。 2.3からはCakePHPインストール直後に以下のように導入を推奨するような警告メッセージが表示されるようになりまし
-
-
アップロードファイルのバリデーションルール
CakePHP 2.2や2.3になってファイルアップロードに対するルールがコアバリデーションに追加されているようで、まとめてみました。 コアバリデーション 関連しそうなルールは以下の4つの
-
-
バリデーションエラーメッセージの取得
CakePHP 2.xになってバリデーションエラー時に返却されるメッセージのデータ形式が変更になったようです。1.3系では、ひとつのフィールドに対して返却されるメッセージは一つのルールのみですが、2.
-
-
多言語サイト向けに翻訳ファイルを使って翻訳を行う
CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook
-
-
FullCalendarを使用してカレンダーアプリケーション
カレンダーアプリケーションを作成するため、カレンダー表示できるプラグインを探索して出会ったFullcalendarを試してみました。シンプルに使用できる上に、オプションがかなり豊富です。ダウンロード
- PREV
- WYSIWYGエディタを実装
- NEXT
- Twenty Twelve 投稿日・投稿者を非表示に



Comment
“CakePHP 2.x | SQLクエリーをログに出力する” http://t.co/5UN8AQQM0Z
CakePHP 2.x | SQLクエリーをログに出力する http://bit.ly/1gIixep