ユーザ用ツール

サイト用ツール


cakephp:query_log

クエリログ取得

cake/libs/model/datasources/dbo/dbo_mysql_log.phpを作成

<?php

uses("model".DS."datasources".DS."dbo".DS."dbo_mysql");
class DboMysqlLog extends DboMysql{
   var $queryNo = 1;
   
   function execute($sql){
       $ret = parent::execute($sql);
       if(defined("LOG_SQL") && LOG_SQL){
           $this->log(sprintf("%d.%s",$this->queryNo,$sql),SQL);
           $this->queryNo++;
       }
       return $ret;
   }
}
  • uses は Ver2.0 以降廃止されるため、現時点で非推奨らしい。
  • $this→log の第二引数(SQL)で出力するファイル名を指定する。

app/config/database.php の 'driver' => 'mysql_log' にする

var $default = array(
   'driver' => 'mysql_log',
   'persistent' => false,
   'host' => 'localhost',
   'login' => 'verynight',
   'password' => 'xxxxxx',
   'database' => 'database',
   'prefix' => '',
   'encoding' => 'utf-8'
);

app/config/bootstrap.php で定数 LOG_SQL を設定(define)する

// set LOG_SQL
define('LOG_SQL', true);
  • true でログ出力、false でログ非出力が設定される。

app/tmp/logs/SQL.log が出力される

~
2011-04-18 1:11:55 Sql: 1.SHOW FULL COLUMNS FROM `tables`
2011-04-18 1:11:56 Sql: 2.SELECT COUNT(*) AS `count` FROM `tables` AS `Table`   WHERE `Table`.`id` = 1
~
cakephp/query_log.txt · 最終更新: 2014/02/26 07:16 by clownclown

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki