Как записывать запросы SQL в файл журнала с помощью CakePHP - PullRequest
3 голосов
/ 18 января 2011

У меня есть приложение CakePHP 1.2, которое выполняет несколько вызовов AJAX с использованием объекта AjaxHelper.AjaxHelper выполняет вызов функции контроллера, которая затем возвращает некоторые данные обратно на страницу.

Я хотел бы регистрировать запросы SQL, которые выполняются функциями контроллера AJAX.Обычно я просто устанавливаю уровень отладки на 2 в config / core.php, однако это нарушает мою функциональность AJAX, потому что это приводит к тому, что выходные SQL-запросы добавляются к выходным данным, которые возвращаются на стороне клиента.1004 * Чтобы обойти эту проблему, я хотел бы иметь возможность записывать любые запросы SQL, выполненные в файл журнала.Есть предложения?

Ответы [ 2 ]

5 голосов
/ 23 января 2011

Я нашел хороший способ добавить эту функцию регистрации по этой ссылке:

http://cakephp.1045679.n5.nabble.com/Log-SQL-queries-td1281970.html

По сути, в вашем каталоге cake/libs/model/datasources/dbo/ вы можете создать подкласс dbo, который вы используете. Например, если вы используете драйвер базы данных dbo_mysql.php, вы можете создать новый файл класса с именем dbo_mysql_with_log.php. Файл будет содержать некоторый код в следующем формате:

App::import('Core', array('Model', 'datasource', 'dbosource', 'dbomysql'));

class DboMysqlWithLog extends DboMysql {
    function _execute($sql) {
        $this->log($sql);
        return parent::_execute($sql);
    }
}

В двух словах, этот класс изменяет (то есть переопределяет) функцию _execute суперкласса для регистрации SQL-запроса перед выполнением любой логики, которую он обычно делает.

Вы можете изменить файл конфигурации app/config/database.php, чтобы использовать только что созданный драйвер.

1 голос
/ 18 января 2011

Это фантастический способ отладки подобных вещей, https://github.com/cakephp/debug_kit

...