Laravel Error and Logging
Contents
今天簡單點、輕鬆一點。
接下來讓我來介紹一下關於 Laravel 的 Log 功能,有時候我們會需要使用到紀錄的功能,需要知道這個 request 到底發了哪些東西,這樣才能方便我們追蹤我們寫的程式與網頁
Laravel 的 logs 其實都放在storage/logs
這個資料夾當中,你會發現有很多以 Laravel 為前綴並且加入date
的.log
檔,如果沒有可能剛好只是你的目前的 log 等級還沒有到那裡(預設是 error,也就是有錯誤的時候才會放進去 log 檔裡面)
其實要弄 log 非常得簡單,使用Log
這個類別即可完成~現在讓我們以之前創建文章的那裡作為範例,首先先去ArticleController.php
這個檔案裡面
|
|
當你新增文章之後,你去到最新日期的.log 檔,就會看到一行「Hi 我們的第一個 Log 訊息」囉!
設定 Log 的設定
其實 Laravl 提供我們很多有關於 Log 的設定,其實我們可以跑到config/logging.php
裡面,其實就記載了許多不少的設定,順便補充說明一下env()
這個方法,他其實就是在讀取.env 檔的設定喔,所以當我們回來看到.env 檔會看到一行
|
|
為什麼 Laravel 預設 log 都是加入日期,然後一個日期一個日期紀錄呢?能不能統一紀錄同一個?
Laravel 聽到你的心聲囉,讓我們把.env 裡面LOG_CHANNEL
從stack
改為single
,其實再一次新增文章之後,你就發現我們的 log 檔就多了一個名叫laravel.log
的檔案啦!
Log 到 Slack
接下來我們來玩一個極有趣的功能,就是讓 log 跑到 slack 上面,其實非常簡單,Laravel 早就幫我們準備好了,總之就是在.env 檔案裡面增加一行
|
|
這個LOG_SLACK_WEBHOOK_URL
請自行去這裏自行加入到自己的 workspace 來找囉!
然後要去一下config/logging.php
修改一下 slack 的 log level,把他從原本預設的critical
改為debug
|
|
之後測試一下新增文章,就會在 slack 找到訊息呢!
如果想要更加使用 log 功能的可以看看以下參考資料:
- https://laravel.com/docs/6.x/logging
- http://kejyun.github.io/Laravel-5-Learning-Notes-Books/services/errors/services-errors-log-packages-slack-log.html
要看完整程式碼的可以參考這裡:https://github.com/r567tw/Make-PHP-Great-Again/commit/dd0466752a79040420427981c94fc22a9e7189c2