2011-03-26 82 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