Slim研讀筆記七亂入篇之Monolog(上)

最近兩天,我的同事小濤濤因開發需要,急需一個日誌系統來記錄日誌。所以,從這節開始我們講解Monolog,深入理解下Monolog的使用方式與實現原理。在開始研讀之前,我們需要理清二個概念異常和錯誤。

異常

異常是Exception類的對象,在遇到無法修復的狀況時拋出(例如,遠程 API 無響應,數據庫查詢失敗等),我們稱這些狀況爲異常狀況。
Exception 對象與其他任何 PHP 對象一樣,使用 new 關鍵字實例化,Exception 對象有兩個主要的屬性:一個是消息,一個是數字代碼。消息用於描述出現的問題,數字代碼是可選的,用於爲指定的異常提供上下文,實例化 Exception 對象時可以像下面這樣設定消息和可選的數字代碼:
$exception = new Exception('Danger, Will Robinson!', 100);
我們可以使用公開的實例化方法 getCode() 和 getMessage() 獲取 Exception 對象的這兩個屬性:
$code = $exception->getCode();
$message = $exception->getMessage();
打印該異常對象可看到這樣的結果

異常還提供了其他公共方法,比如獲取異常文件、行,異常跟蹤等。

PHP曾給出一系列異常處理類,但通過這些異常處理類我們就可以處理所有的異常程序了嗎?答案是不可能的,但PHP允許我們註冊一個全局異常處理程序,用於捕獲所有未處理的異常。異常處理程序使用set_exception_handler()函數註冊。

錯誤

除了異常之外,PHP 還提供了用於報告錯誤的函數,PHP 能觸發不同級別的錯誤,如致命錯誤、運行時錯誤、編譯時錯誤、啓動錯誤和用戶觸發的錯誤等,錯誤與異常的一個不同點是錯誤會中斷程序的執行。我們平時最常見的錯誤是由語法錯誤或未捕獲異常導致的錯誤。
錯誤和異常的差別很小,如果 PHP 腳本由於某種原因根本無法運行,通常會觸發錯誤。我們還可以使用 trigger_error 函數自己觸發錯誤,然後使用自定義的錯誤處理程序進行處理,不過,編寫運行在用戶空間裏的代碼時最好使用異常。與錯誤不同的是,PHP 異常可以在 PHP 應用的任何層級拋出和捕獲。異常提供的上下文信息比錯誤多,而且我們可以擴展最頂層的 Exception 類,創建自定義的異常子類。異常加上一個好的日誌記錄器(如 Monolog)比錯誤能解決更多的問題。不過,話說回來,現代 PHP 開發者必須能預測並處理 PHP 錯誤及異常。錯誤處理程序使用set_error_handler()函數註冊。
在生產環境中,我們不會直接在頁面顯示異常及錯誤,而是將它們記錄到日誌,PHP 提供了 error_log() 函數,通過這個函數可以將錯誤消息寫入文件系統或 syslog,還可以通過郵件發送錯誤消息,不過除此之外,我們還有更好的選擇 —— Monolog。讓我們開啓Monolog之旅吧。






























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章