ホンマはApp/Model/DataSourceに置くべきなんだけど、とりあえず動いたので。MySqlの場合。
1. /lib/Cake/Model/Datasource/DatabaseにMysqlLog.phpを作る。
2.作ったファイルをこんな感じのクラス定義を行う。
<? App::uses('Mysql', 'Model/Datasource/Database'); //Mysqlクラスを継承するのがポイント class MysqlLog extends Mysql { function execute($sql){ //Mysql→Dbosourceとエスカレーション $ret = parent::execute($sql); //sqlをapp/tmp/sql.logに吐き出す $this->log(sprintf("%s",$sql),'sql'); return $ret; } }
3 database.phpのconfigをいじる
<? class DATABASE_CONFIG { public $default = array( //1で作ったログ吐き出しクラスを使う 'datasource' => 'Database/MysqlLog', 'persistent' => false, 'host' => 'localhost', );
いじょ。