《Laravel – 善用LOG挖掘問題的真相 – 學習筆記》

Telegram share !

只要是程式經過一段時間的運作或多說少一定會出現問題,不論是程式面或是資料面,還是系統面都有可能,第一種也許可以靠經驗或是單元測試來預先避免,但是遇到資料面及系統面的問題,只能在運作的當下才會發現,而由於有時候是我們網站的訪客發現異常而不是我們內部的同仁或是開發人員,所以這時候我們就需要透過各種LOG來挖掘問題發生的原因,在Laravel 框架中提供強大的Monolog函式庫供開發者使用,但由於內建函式眾多,我只提供日常比較常用的函式供你參考,我也順便紀錄下來當作備忘錄,也希望藉由此次分享讓初學者能更快掌握相關語法。

預設的檔案路徑位於<your project directory>/storage/logs/laravel.log 也可以視你實際的需求變更路徑

Log Channel

Log Channel有很多類型可以選擇,”single”, “daily”, “slack”, “syslog”,”errorlog”, “monolog”,”custom”, “stack”,預設的Log Channel為stack


在.env檔案中的LOG_CHANNEL可以使用以下語法設定

LOG_CHANNEL=stack
LOG_LEVEL=debug
APP_LOG=daily
APP_LOG_MAX_FILES=28

設定 Single 和 Daily 頻道

single 和 daily 頻道包含三個可選配置設定:bubble 、permission 和 locking.

日誌等級(LOG LEVEL)

紀錄LOG嚴重程度,從最低到最嚴重: debug, info, notice, warning, error, critical, alert, emergency.

Log::emergency($message);    //緊急狀況,如系統掛掉
Log::alert($message);        //需要立即採取行動的問題,比如整站當掉,資料庫異常等,這種狀況應該透過簡訊提醒
Log::critical($message);     //嚴重問題,比如:應用元件無效,意料之外的異常
Log::error($message);        //程式runtime時錯誤,不需要立即處理但需要被記錄和監控
Log::warning($message);      //警告但不是錯誤,比如使用了被Laravel廢棄的API
Log::notice($message);       //普通但值得注意的事件
Log::info($message);         //感興趣的事件,比如登入、登出
Log::debug($message);        //詳細的debug資訊

Reference