ป้ายกำกับ: CI

เก็บ CodeIgniter log ด้วย hookเก็บ CodeIgniter log ด้วย hook

วิธีที่จะพัฒนาและดูแลเว็บคือทำระบบ log ที่จะบันทึกข้อมูลการใช้งาน ซึ่งจะบันทึกสิ่งที่เกิดขึ้นไว้สำหรับเข้ามาดูเหตุการณ์ที่เกิดขึ้นย้อนหลังได้ มีประโยชน์ในการดูแลระบบโดยเฉพาะตัวที่เป็น API ให้ระบบอื่น ๆ เรียกใช้ สำหรับ ci เราสามารถเขียนได้โดยการใช้ hook

ระบบ Hook (ตะขอ) คือ เป็นตะขอที่เกี่ยวกับเหตุการณ์ซักอย่างแล้วจึงทำงาน เหมือนกับ tricker ในดาต้าเบส หรือจะ อธิบายการทำงานง่าย ๆ ก็เหมือน คุณไปที่ร้านอาหารคิดไม่ออกว่าจะทานอะไร ใช้วิธีรอให้เพื่อนสั่งแล้วบอกว่า หมีทู่ (me too.) นั้นละครับ

  1. ก่อนอื่น ไปเปิดการใช้งาน hook ก่อน เปิดไฟล์ /application /config/config.php แก้ $config[‘enable_hooks’] = FALSE; เป็น TRUE;
  2. เปิดไฟล์ /application /config/ hooks.php เพิ่มบรรทัด
    $hook['post_system'][] = array ('class' => '', 'function' => 'log_Profiling', 'filename' => 'log_Profiling.php', 'filepath' => 'hooks') ;
    
  3. จากนั้นไปสร้างไฟล์ log_Profiling.php ใน /application/hooks เนื้อหาตามนี้ครับ
    <?php
    function log_Profiling () {
    global $CI ,$application_folder; $output = '<html><body>'; $output .= '<fieldset id="ci_profiler_benchmarks" style="border:1px solid #c00000;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">
    <legend style="color:#c00000;">OUTPUT</legend>'.$CI->output->get_output () .'</fieldset>'; if (! isset ($_POST['profiler'])) { $CI->load->library ('profiler') ; if (! empty ($CI->_profiler_sections)) { $CI->profiler->set_sections ($this->_profiler_sections) ; } $output .= $CI->profiler->run () ; } $output .= '</body></html>'; $fp = fopen ($application_folder.'/logs/Profiling/'.date ('Y-m-d-H-i-s-U') .'_'.$CI->router->fetch_class () .'_'.$CI->router->fetch_method () .'.html' ,'w') ; flock ($fp ,LOCK_EX) ; fwrite ($fp ,$output) ; flock ($fp ,LOCK_UN) ; fclose ($fp) ;
    }
    
  4. สร้างโฟลเดอร์ application/logs/Profiling/