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モードを変えて・・とか面倒な事がなくなりますね。