2011-03-26 83 views
3

我正在开发一个应用程序使用Codeigniter 1.7.3(是的,我知道有一个新的版本,但我懒得更新)。Codeigniter查询时间和自定义文件记录

我注意到Codeigniter内置的分析器输出查询时间。我想访问这些时间,并为每个查询和每个查询时间编写一个自定义日志文件。要访问查询,我可以使用$ this-> db-> last_query()。

有什么办法可以在不破解核心的情况下访问这些查询时间吗? 除了系统日志Codeigniter blundles之外,是否还有任何库可以写入日志?

谢谢!

回答

10

嗯,我看着办吧。我已经设置了这样一个钩子:

 
//config/hooks.php 

$hook['display_override'][] = array(
     'class' => '', 
     'function' => 'log_queries', 
     'filename' => 'log_queries.php', 
     'filepath' => 'hooks' 
); 

//hooks/log_queries.php 

function log_queries() { 
    $CI =& get_instance(); 
    $times = $CI->db->query_times; 
    foreach ($CI->db->queries as $key=>$query) { 
     log_message('debug', "Query: ".$query." | ".$times[$key]); 
    } 
} 

我希望它可以帮助别人!

+3

老兄你忘了'$ CI-> output - > _ display();'。我的所有网页都是空白的。 – 2012-08-30 15:47:50

+0

我使用了很多不使用视图的代码:例如,直接从控制器返回JSON的API调用。在我的例子中,我决定在我的钩子定义中使用'post_controller'而不是'display_override'。 此外,请确保您在配置文件中打开了挂钩。他们默认关闭。 – 2015-02-23 15:38:47

2

不能用的东西笨方面的帮助,但对于记录,log4php好: http://logging.apache.org/log4php/

+0

我正在寻找更多的Codeigniter-ish方法。无论如何,我刚刚解决了这个问题。谢谢! – fedeisas 2011-03-26 20:28:29

+0

@fedeisas Codeigniter日志吸盘。它添加了太多的调试垃圾。 – 2012-08-30 15:48:47