W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
應(yīng)用程序的日志功能配置在 Illuminate\Foundation\Bootstrap\ConfigureLogging
啟動類中。這個類使用 config/app.php
配置文件的 log
配置選項。
日志工具默認(rèn)使用每天的日志文件;然而,你可以依照需求自定義這個行為。因為 Laravel 使用流行的 Monolog 日志函數(shù)庫,你可以利用很多 Monolog 提供的處理進程。
例如,如果你想要使用單一日志文件,而不是每天一個日志文件,你可以對 config/app.php
配置文件做下面的變更:
'log' => 'single'
Laravel 提供立即可用的 single
、daily
、syslog
和 errorlog
日志模式。然而,你可以通過覆寫 ConfigureLogging
啟動類,依照需求自由地自定義應(yīng)用程序的日志。
config/app.php
配置文件的 app.debug
配置選項控制應(yīng)用程序透過瀏覽器顯示錯誤細(xì)節(jié)。配置選項默認(rèn)參照 .env
文件的 APP_DEBUG
環(huán)境變量。
進行本地開發(fā)時,你應(yīng)該配置 APP_DEBUG
環(huán)境變量為 true
。 在上線環(huán)境,這個值應(yīng)該永遠為 false
。
所有的異常都由 App\Exceptions\Handler
類處理。這個類包含兩個方法: report
和 render
。
report
方法用來記錄異?;虬旬惓鬟f到外部服務(wù),例如: BugSnag 。默認(rèn)情況下, report
方法只基本實現(xiàn)簡單地傳遞異常到父類并于父類記錄異常。然而,你可以依你所需自由地記錄異常。如果你需要使用不同的方法來報告不同類型的異常,你可以使用 PHP 的 instanceof
比較運算符:
/** * 報告或記錄異常。 * * 這是一個發(fā)送異常到 Sentry、Bugsnag 等服務(wù)的好地方。 * * @param \Exception $e * @return void */public function report(Exception $e){ if ($e instanceof CustomException) { // } return parent::report($e);}
render
方法負(fù)責(zé)把異常轉(zhuǎn)換成應(yīng)該被傳遞回瀏覽器的 HTTP 響應(yīng)。默認(rèn)情況下,異常會被傳遞到基礎(chǔ)類并幫你產(chǎn)生響應(yīng)。然而,你可以自由的檢查異常類型或返回自定義的響應(yīng)。
異常處理進程的 dontReport
屬性是個數(shù)組,包含應(yīng)該不要被紀(jì)錄的異常類型。由 404 錯誤導(dǎo)致的異常默認(rèn)不會被寫到日志文件。你可以依照需求添加其他類型的異常到這個數(shù)組。
有一些異常是描述來自服務(wù)器的 HTTP 錯誤碼。例如,這可能是個「找不到頁面」錯誤 (404)、「未授權(quán)錯誤」(401),或甚至是工程師導(dǎo)致的 500 錯誤。使用下面的方法來返回這樣一個響應(yīng):
abort(404);
或是你可以選擇提供一個響應(yīng):
abort(403, 'Unauthorized action.');
你可以在請求的生命周期中任何時間點使用這個方法。
要讓所有的 404 錯誤返回自定義的視圖,請建立一個 resources/views/errors/404.blade.php
文件。應(yīng)用程序?qū)褂眠@個視圖處理所有發(fā)生的 404 錯誤。
Laravel 日志工具在強大的 Monolog 函數(shù)庫上提供一層簡單的功能。Laravel 默認(rèn)為應(yīng)用程序建立每天的日志文件在 storage/logs
目錄。你可以像這樣把信息寫到日志:
Log::info('This is some useful information.');Log::warning('Something could be going wrong.');Log::error('Something is really going wrong.');
日志工具提供定義在 RFC 5424 的七個級別:debug、info、notice、warning、error、critical 和 alert。
也可以傳入上下文相關(guān)的數(shù)據(jù)數(shù)組到日志方法里:
Log::info('Log message', ['context' => 'Other helpful information']);
Monolog 有很多其他的處理方法可以用在日志上。如有需要,你可以取用 Laravel 底層使用的 Monolog 實例:
$monolog = Log::getMonolog();
你也可以注冊事件來捕捉所有傳到日志的消息:
Log::listen(function($level, $message, $context){ //});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: