Cela dépend de la façon dont vous souhaitez les auditer. Si vous recherchez une base par page, l'activation du profileur ira bien. Cela montre toutes les requêtes exécutées sur ce chargement de page ainsi que le temps nécessaire pour les exécuter. Voir le lien ci-dessous sur le profileur.
http://codeigniter.com/user_guide/general/profiling.html
Si vous souhaitez enregistrer toutes les requêtes au fur et à mesure, puis lire le fichier journal ultérieurement, vous devrez étendre la classe de base de données. Si tel est le cas, commentez et je mettrai à jour/étendrai ma réponse davantage.
Extension pour écraser query()
Étendez MY_Loader.php dans /application/core/ et insérez cette fonction
function database($params = '', $return = FALSE, $active_record = NULL)
{
// Grab the super object
$CI =& get_instance();
// Do we even need to load the database class?
if (class_exists('CI_DB') AND $return == FALSE AND $active_record == NULL AND isset($CI->db) AND is_object($CI->db)) {
return FALSE;
}
require_once(BASEPATH.'database/DB'.EXT);
// Load the DB class
$db =& DB($params, $active_record);
$my_driver = config_item('subclass_prefix').'DB_'.$db->dbdriver.'_driver';
$my_driver_file = APPPATH.'core/'.$my_driver.EXT;
if (file_exists($my_driver_file)) {
require_once($my_driver_file);
$db = new $my_driver(get_object_vars($db));
}
if ($return === TRUE) {
return $db;
}
// Initialize the db variable. Needed to prevent
// reference errors with some configurations
$CI->db = '';
$CI->db = $db;
}
Créez ensuite /application/core/MY_DB_mysql_driver.php
Ensuite, à l'intérieur, vous pouvez écraser query()
function query($sql, $binds = FALSE, $return_object = TRUE) {
// Do your stuff
return parent::query( $sql, $binds, $return_object );
}
Évidemment, remplacez mysql dans le nom de fichier par le pilote de base de données que vous utilisez/essayez d'étendre.
Cela fonctionnera également avec Active Record comme tous les get()
les méthodes appellent query()
du conducteur pour exécuter leurs requêtes.