Yii 1.1: SQL Logging and Profiling in FireBug (Yii 1.1)

6 followers

During development, it's often very handy to have SQL logging and profiling.

I found that this was tricky in Yii 1.0, but with Yii 1.1, I'm pleased to say, this is now much easier. While the new CWebLogRoute, by default, will inject it's output after the </html> tag, producing invalid markup and often resulting in strange rendering artifacts, logging to the FireBug console is a very useful feature!

Personally, I prefer to build this into my "index.php" file - here's an example of how to modify the configuration depending on the domain name, to have the SQL logging and profiling turned on when you're testing your site from a local domain.

Example "index.php" file:

// change the following paths if necessary
$yii=dirname(dirname(__FILE__)).'/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
 
// remove the following line when in production mode
if ($_SERVER['HTTP_HOST'] == 'localhost') { 
    defined('YII_DEBUG') or define('YII_DEBUG',true);
    $config['components']['log']['routes'][] = array(
       'class'=>'CWebLogRoute',
       'categories'=>'system.db.CDbCommand',
       'showInFireBug'=>true,
    );
    $config['components']['db']['enableProfiling'] = true;
    $config['components']['db']['enableParamLogging'] = true;
}
 
require_once($yii);
Yii::createWebApplication($config)->run();

It's as simple as that - now run the site with FireBug enabled, and you should see your SQL queries, with parameters, displayed on the Console tab in FireBug!

Links ΒΆ

Russian version

Total 3 comments

#15622 report it
Tiny Byte at 2013/11/30 01:57am
enable logging on ajax requests

Can we log database queries on ajax requests too? I am logging alright but how can I enable logging database queries on ajax requests?

#4170 report it
tri at 2011/06/12 12:13pm
Missing require()

This will work from index.php

...
$config=require(dirname(__FILE__).'/protected/config/main.php');
...
#640 report it
Spear at 2010/04/02 05:46am
If it does not work from index.php

Configure it in your config file:

'components'=>array(
    'log'=>array(
        'class'=>'CLogRouter',
        'routes'=>array(
            array(
                'class'=>'CFileLogRoute',
                'levels'=>'error, warning',
            ),
            array(
                'class'=>'CWebLogRoute',
                'categories'=>'system.db.CDbCommand',
                'showInFireBug'=>true,
            ),
            // uncomment the following to show log messages on web pages
            /*
            array(
                'class'=>'CWebLogRoute',
            ),
            */
        ),
    ),
    'db'=>array(
        'enableProfiling'=>true,
        'enableParamLogging'=>true,
    ),              
),

Leave a comment

Please to leave your comment.

Write new article
  • Written by: mindplay
  • Updated by: qiang
  • Category: Tutorials
  • Yii Version: 1.1
  • Votes: +7
  • Viewed: 19,818 times
  • Created on: Dec 24, 2009
  • Last updated: Oct 18, 2010
  • Tags: Logging