ホームページ >バックエンド開発 >PHPチュートリアル >[Lumen 5.2 ドキュメント] その他の機能 -- エラーとログ

[Lumen 5.2 ドキュメント] その他の機能 -- エラーとログ

WBOY
WBOYオリジナル
2016-06-20 12:37:10827ブラウズ

1. はじめに

新しい Lumen プロジェクトを開始すると、エラーと例外処理がデフォルトで設定されています。さらに、Lumen には、さまざまな強力なログ プロセッサを提供する Monolog ロギング ライブラリも統合されています。

2. 構成

エラーの詳細

構成ファイル .env の APP_DEBUG 構成オプションは、表示されるエラーの詳細の数を制御します。ブラウザ。

ローカル開発の場合は、環境変数 APP_DEBUG を true に設定する必要があります。運用環境では、この値を false に設定する必要があります。

カスタマイズされた Monolog 構成

Monolog 構成を完全に制御したい場合は、configureMonologUsing メソッドを使用でき、ブートストラップ/アプリで呼び出す必要があります。 .php このメソッド:

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

3. 例外ハンドラー

すべての例外は、report と render の 2 つのメソッドを含むクラス AppExceptionsHandler によって処理されます。以下では、これら 2 つの方法について詳しく説明します。

3.1 レポート メソッド

レポート メソッドは、例外を記録し、Bugsnag などの外部サービスに送信するために使用されます。デフォルトでは、レポート メソッドは、例外がログに記録される基本クラスに例外を渡すだけです。例外は任意にログに記録できます。

たとえば、異なるタイプの例外を異なる方法で報告する必要がある場合は、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 例外

一部の例外は、たとえば、これは「ページが見つかりません」エラー (404)、「認証失敗エラー」(401)、またはプログラム エラーによって引き起こされる 500 エラーである可能性があります。アプリケーションでこのような応答を生成するには、次のコードを使用します。メソッド:

abort(404);

abort メソッドは、例外ハンドラーによってレンダリングされる例外を即座に発生させます。さらに、次のような応答の説明を指定することもできます:

abort(403, 'Unauthorized action.');

このメソッドは、リクエストのライフサイクル内でいつでも使用できます。

5. ログ

Lumen ログ ツールは、強力な Monolog ライブラリに基づいています。デフォルトでは、Lumen は storage/logs ディレクトリにアプリケーションのログを生成するように設定されています。 . ファイルでは、ログ ファサードを使用してログ情報をログに書き込むことができます:

<?phpnamespace App\Http\Controllers;use Log;use App\User;use App\Http\Controllers\Controller;class UserController extends Controller{    /**     * 显示指定用户的属性     *     * @param  int  $id     * @return Response     */    public function showProfile($id)    {        Log::info('Showing user profile for user: '.$id);        return view('user.profile', ['user' => User::findOrFail($id)]);    }}

このロガーは、RFC 5424 で定義されている 7 つのログ レベルを提供します: alert Criticalエラー警告通知情報、および デバッグ

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]);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。