CakePHPでアプリ開発保守を行っていると
ログを見たい時ってありますよね。
ただ、本番稼働中だとdebug値を容易には変えられません。
そこで、Cakeで用意されているdbo↓
app/model/dbo/dbo_postgres_log.php
を継承したクラスを作ってログを保存するように。
前提条件
CakePHP1.3
Postgres8.3
# touch app/model/dbo/dbo_postgres_log.php
継承ファイルを作成して
uses ('model' . DS . 'datasources' . DS . 'dbo' . DS . 'dbo_postgres');
class DboPostgresLog extends DboPostgres {
	var $queryNo = 1;
	function execute ($sql) {
	    $ret = parent::execute($sql);
	    if (defined('LOG_SQL') && LOG_SQL) {
	        $this->log(sprintf("%d. %s", $this->queryNo, $sql), LOG_DEBUG);
	        $this->queryNo++;
	    }
	    return $ret;
	}
}
こちらの内容を記載します。
んで作成したdboファイルを利用するように設定します。
# vi app/config/database.php 'driver' => 'postgres', ↓ 'driver' => 'postgres_log',
最後にログ制御定数を設置します。
# vi app/config/core.php
define('LOG_SQL', true);
これで、
app/tmp/logs/debug.php
こちらにsqlログが格納されるようになったかと思います。
いちいち、社内のみdebugモードを変えて・・とか面倒な事がなくなりますね。
 
							 
							







