CodeIgniter 在處理 PHP Error handler 是直接呼叫內建的 Exceptions Class 顯示在瀏覽器上,如果有打開 log,系統另外會紀錄在 application/logs 目錄。這是 CodeIgniter 預設作法,但是我希望能把這些錯誤訊息都紀錄到 Database,相關 Notice, Error 訊息都一律寫到 DB 裡面,但是如果用 extend 系統內的 Exceptions 是完全做不到的,所以我寫了一個 Library 只要直接 include 系統就可以直接開始紀錄,因為在 PHP 你會遇到無數種 User experience,都會產生相關錯誤訊息,在產品上線都會將 display_errors 設定為 0,不要讓使用者看到任何錯誤訊息,但是我們還是需要全部的錯誤訊息阿,底下來看看如何安裝 Log Library。
建立 log table 可以直接參考
連結,或者是複製底下資料貼到 phpMyAdmin。
-- -- Table structure for table `logs` -- DROP TABLE IF EXISTS `logs`; CREATE TABLE IF NOT EXISTS `logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `errno` int(2) NOT NULL, `errtype` varchar(32) CHARACTER SET utf8 NOT NULL, `errstr` text CHARACTER SET utf8 NOT NULL, `errfile` varchar(255) CHARACTER SET utf8 NOT NULL, `errline` int(4) NOT NULL, `time` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
安裝 如果你熟悉
CodeIgniter getsparks,可以透過 command line 安裝
$ php tools/spark install -v1.0.0 codeigniter-log那也可以透過複製檔案的方式安裝:
$ cp config/log.php your_application/config/ $ cp libraries/Lib_log.php your_application/libraries/ $ cp controllers/example.php your_application/controllers/
使用方式 如果是透過 getsparks 安裝,請將底下程式碼寫到
__construct function 裡面
$this->load->spark('codeigniter-log/1.0.0');如果是手動安裝,請改成底下
$this->load->library('lib_log');接著可以在程式碼任何地方紀錄您要的錯誤訊息
trigger_error("User error via trigger.", E_USER_ERROR); trigger_error("Warning error via trigger.", E_USER_WARNING); trigger_error("Notice error via trigger.", E_USER_NOTICE);可以參考
Example Screenshot: 如果有任何問題,可以參考 Github 專案 或 getspark