mysql – 如何使用CakePHP将SQL查询记录到日志文件中

我有一个CakePHP 1.2应用程序,它使用AjaxHelper对象进行大量的AJAX调用. AjaxHelper调用一个控制器函数,然后将一些数据返回给页​​面.

我想记录由AJAX控制器函数执行的SQL查询.通常,我只是在config / core.php中将调试级别调为2,但是,这会破坏我的AJAX功能,因为它会将输出SQL查询附加到返回给客户端的输出.

为了解决这个问题,我希望能够将执行的任何SQL查询记录到日志文件中.有什么建议么?

我发现在此链接添加此日志记录功能的好方法:

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配置文件以使用刚刚创建的新驱动程序.

https://stackoverflow.com/questions/4721052/how-to-log-sql-queries-to-a-log-file-with-cakephp

转载注明原文:mysql – 如何使用CakePHP将SQL查询记录到日志文件中