2020-11-10|閱讀時間 ‧ 約 3 分鐘

Laravel 如何寫 Log

Laravel的日誌系統底層是Monolog,設定在config\logging.php裡面,預設路徑是在storage\logs\laravel.log,也可以更改成喜歡的路徑。
Log Channel:
Log有很多Channel可以選,如下圖:
single就是把log都寫在同一份,daily表示每天產生一份log,其中的days表示要保存最近幾天內的logs,以這個例子而言,超過14天的都會被自動刪除。

Log Level:
LOG_LEVEL會把大於等於目前level的都print出來,log級別順序由上到下為: emergency、alert、critical、error、warning、notice、info 、debug
由於預設log level為debug,所以所有級別的log都會print出來。

Laravel Framework version: 8.13.0
做個測試,在.env檔案中的LOG_CHANNEL使用stack,可以把channel合併起來,例如像是我把single跟daily合起來,指定寫在不同file name。
可以發現log紀錄的時間慢了8個小時,要修改config\app.php中的timezone:
改為Asia/Taipei
之後就發現對了:
可是log中都沒有記錄檔名跟行數,這樣以後查log會很麻煩,survey了一下,可以把程式碼改成這樣:
但是這樣寫如果日後要改log format會累死,因此可以改成helper function。 可參考我這篇: Laravel 建立 Helper function
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.