2016-09-20 2 views
5

フックを使用して実行した後、すべてのクエリをログに記録します。 config.phpの中-i有効フック - これは私のフックです - >実行後にすべてのクエリをコードシニターで記録する

$hook['post_controller'] = array( 
    'class' => 'Db_log',    
    'function' => 'logQueries',  
    'filename' => 'db_log.php',  
    'filepath' => 'hooks'   
); 

- そしてこれは、フックdefinationある - query_logファイル を作成する>

class Db_log 
{ 

    function __construct() 
    { 
    } 


    function logQueries() 
    { 
     $CI = & get_instance(); 

     $filepath = APPPATH . 'logs/Query-log-' . date('Y-m-d') . '.php'; 
     $handle = fopen($filepath, "a+");       

     $times = $CI->db->query_times; 
     foreach ($CI->db->queries as $key => $query) 
     { 
      $sql = $query . " \n Execution Time:" . $times[$key]; 

      fwrite($handle, $sql . "\n\n");  
     } 

     fclose($handle); 
    } 

} 

--its - しかし、クエリのレコードが格納されていない

答えて

4

あなたのコードはうまく見えます - これがうまくいかない理由はあなたのDB設定にあります - application/config/

の下のdatabase.phpであなたのDB接続を見てください

はそれだけで私はconfigにデ$フック配列を定義/ hooks.phpを働いていた私にとって真

$db['default'] = array(
    ... 
    'save_queries' => TRUE 
); 
+0

ありがとうございました... –

+0

上記のコードは正常に動作していますが、そのSELECTクエリのみをログに記録します。SELECTクエリの代わりにINSERT、UPDATE、DELETEのみを記録したい場合はどうすればいいですか? –

+0

他のタイプのクエリもログに記録する必要があります - クエリはすべてのタイプのクエリです – sintakonte

0

に設定する必要がありますオプション「save_queries」があります。

関連する問題