code igniter log all queries

Developing applications in Code Igniter is fun and easy, as we do not have to write much of the actual queries because of its Active Record Implementation. Moreover, we can find plugins for CI which will write all the model classes for you in a click.

As we keep on developing application, we might sometimes need to keep track of the queries that have been run during each page load. It might seem minimal but while developing large enterprise applications, even the smallest optimizations will speed up things a lot.

Below you’ll find a CodeIgniter hook that logs all database queries to a simple text file.

asked Jun 1, 2015 in codeinither by rajesh
0 votes

1 Answer

0 votes
/* config/hooks.php */
$hook['post_system'][] = array(
    'class' => 'LogQueryHook',
    'function' => 'log_queries',
    'filename' => 'LogQueryHook.php',
    'filepath' => 'hooks'
/* application/hooks/LogQueryHook.php */
class LogQueryHook {
    function log_queries() {    
        $CI =& get_instance();
        $times = $CI->db->query_times;
        $dbs    = array();
        $output = NULL;     
        $queries = $CI->db->queries;
        if (count($queries) == 0){
            $output .= "no queries\n";
            foreach ($queries as $key=>$query){
                $output .= $query . "\n";
            $took = round(doubleval($times[$key]), 3);
            $output .= "===[took:{$took}]\n\n";
        if ( ! write_file(APPPATH  . "/logs/queries.log.txt", $output, 'a+')){
             log_message('debug','Unable to write query the file');
answered Jun 1, 2015 by rajesh