[ Laravel 5.2 ドキュメント ] サービス -- エラーとログ

WBOY
リリース: 2016-06-23 13:17:18
オリジナル
866 人が閲覧しました

1. はじめに

Laravel は、デフォルトでエラーと例外処理を設定しています。さらに、Laravel は、さまざまな強力なログ プロセッサを提供するために、Monolog ログ ライブラリも統合しています。

2. 構成

エラー詳細表示

構成ファイル config/app.php のデバッグ構成オプションは、ブラウザーによって表示されるエラー詳細の数を制御します。デフォルトでは、この構成オプションは .env ファイルの環境変数 APP_DEBUG に設定されます。

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

ログモード

Laravel は、単一、毎日、syslog、およびエラーログのログメソッドをサポートしています。たとえば、単一のファイルを生成するのではなく、ログ ファイルを毎日生成したい場合は、構成ファイル config/app.php で次のようにログ値を設定する必要があります:

'log' => 'daily'
ログイン後にコピー

Custom Monolog 構成

If youアプリケーションで完全な制御が必要 Monolog 構成の場合、アプリケーションの configureMonologUsing メソッドを使用できます。 bootstrap/app.php ファイルが $app 変数を返す前に、このメソッドを呼び出す必要があります:

$app->configureMonologUsing(function($monolog) {    $monolog->pushHandler(...);});return $app;
ログイン後にコピー

3. 例外ハンドラー

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

3.1 report メソッド

report メソッドは、例外を記録し、それを 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 例外

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

abort(404);
ログイン後にコピー

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

abort(403, 'Unauthorized action.');
ログイン後にコピー

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

カスタム HTTP エラー ページ

Laravel を使用すると、複数の HTTP ステータス コードを含むエラー ページを簡単に返すことができます。たとえば、404 エラー ページをカスタマイズしたい場合は、resources/views/errors/404.blade.php ファイルを作成します。ファイルを与えると、プログラムによって生成されたすべての 404 エラーがレンダリングされます。

変更されたディレクトリ内のビューの名前は、対応する HTTP ステータス コードと一致する必要があります。

5. ログ

Laravel ログ ツールは、強力な Monolog ライブラリに基づいており、デフォルトで、Laravel は 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)]);    }}
ログイン後にコピー
コンテキスト情報 コンテキストデータ配列も log メソッドに渡されます。コンテキスト データはログ メッセージとともにフォーマットされて表示されます:
Log::emergency($error);Log::alert($error);Log::critical($error);Log::error($error);Log::warning($error);Log::notice($error);Log::info($error);Log::debug($error);
ログイン後にコピー
基礎となる Monolog インスタンスへのアクセス Monolog にはログ記録に使用できる複数のハンドラーがあります。必要に応じて、基礎となる Monolog インスタンスにアクセスできます:
Log::info('User failed to login.', ['id' => $user->id]);
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート