【サムライエンジン】CakePHP-sqlのログをファイルに取得
MySQLの場合ですが、これでいかがでしょう?
いくつか調べた中でも簡単です。
もしかすると上記は公開サイト上にも出てきてしまう恐れがあるので、その場合は
http://www.1x1.jp/blog/2007/04/cakephp_sql_log.html
こちらのほうが良いかもしれません。
以下のように変更を加えることでSQLを任意のファイルに吐き出すことができます。
■app/config/database.php
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql_with_log', // ここを変更してください
// ...
)
}
■cake/libs/model/datasources/dbo/mysql_with_log.php ※新規に作成する
<?php require (LIBS . 'file.php'); require (LIBS . 'model' . DS . 'datasources' . DS . 'dbo' . DS . 'dbo_mysql.php'); class DboMysqlWithLog extends DboMysql { function _execute($sql) { // ログを残す処理になります $filename = ...; // SQLを出力したいファイル名を設定します $log = new File($filename, true); $message = date('Y-m-d H:i:s') . ' SQL: ' . $sql . "\n"; $log->append($message); // 本来の処理を呼び出します return parent::_execute($sql); } } ?>
回答を作成するにあたって以下のページを参考に致しました。
http://cakephp.1045679.n5.nabble.com/Log-SQL-queries-td1281970.html
http://stackoverflow.com/questions/4721052/how-to-log-sql-queries-to-a-log-file-with-cakephp
http://api.cakephp.org/view_source/file-log/