[ Lumen 5.2 文檔 ] 更多特性 -- 錯誤 & 日誌

來源:互聯網
上載者:User

1、簡介

開始一個新的Lumen項目的時候,錯誤和異常處理已經預設為你配置好了。此外,Lumen還整合了提供各種功能強大Tlog器的Monolog日誌庫。

2、配置

錯誤詳情

設定檔 .env中的 APP_DEBUG配置選項控制瀏覽器顯示的錯誤詳情數量。

對本地開發而言,你應該設定環境變數 APP_DEBUG值為 true。在生產環境,該值應該被設定為 false。

自訂Monolog配置

如果你想要完全控制Monolog的配置,可以使用 configureMonologUsing方法,並且需要在 bootstrap/app.php中調用該方法:

$app->configureMonologUsing(function($monolog) {    $monolog->pushHandler(...);});return $app;

3、異常處理器

所有異常都由類 App\Exceptions\Handler處理,該類包含兩個方法: report和 render。下面我們詳細闡述這兩個方法。

3.1 report方法

report方法用於記錄異常並將其發送給外部服務如 Bugsnag。預設情況下, report方法只是將異常傳遞給異常被記錄的基類,你可以隨心所欲的記錄異常。

例如,如果你需要以不同方式報告不同類型的異常,可使用PHP的 instanceof比較操作符:

/** * 報告或記錄異常 * * This is a great spot to send exceptions to Sentry, Bugsnag, etc. * * @param  \Exception  $e * @return void */public function report(Exception $e){    if ($e instanceof CustomException) {        //    }    return parent::report($e);}

通過類型忽略異常

異常處理器的 $dontReport屬性包含一個不會被記錄的異常類型數組,預設情況下, 404錯誤異常不會被寫到記錄檔,如果需要的話你可以添加其他異常類型到這個數組。

3.2 render方法

render方法負責將給定異常轉化為發送給瀏覽器的HTTP響應,預設情況下,異常被傳遞給為你產生響應的基類。然而,你可以隨心所欲地檢查異常類型或者返回自訂響應:

/** * 將異常渲染到HTTP響應中 * * @param  \Illuminate\Http\Request  $request * @param  \Exception  $e * @return \Illuminate\Http\Response */public function render($request, Exception $e){    if ($e instanceof CustomException) {        return response()->view('errors.custom', [], 500);    }    return parent::render($request, $e);}

4、HTTP異常

有些異常描述來自伺服器的HTTP錯誤碼,例如,這可能是一個“頁面未找到”錯誤( 404),“認證失敗錯誤”( 401)亦或是程式出錯造成的 500錯誤,為了在應用中產生這樣的響應,使用如下方法:

abort(404);

abort方法會立即引發一個會被異常處理器渲染的異常,此外,你還可以像這樣提供響應描述:

abort(403, 'Unauthorized action.');

該方法可在請求生命週期的任何時間點使用。

5、日誌

Lumen日誌工具基於強大的 Monolog庫,預設情況下,Lumen被配置為在 storage/logs目錄下每日為應用組建記錄檔檔案,你可以使用 Log門面編寫日誌資訊到日誌中:

 User::findOrFail($id)]);    }}

該日誌記錄器提供了 RFC 5424中定義的七種記錄層級: alert, critical, error, warning, notice, infodebug

Log::alert($error);Log::critical($error);Log::error($error);Log::warning($error);Log::notice($error);Log::info($error);Log::debug($error);

上下文資訊

上下文資料數組也會被傳遞給日誌方法。上下文資料將會和日誌訊息一起被格式化和顯示:

Log::info('User failed to login.', ['id' => $user->id]);
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.