ホームページ php教程 PHP开发 Laravel 5.3 スタディノートのエラーとログ

Laravel 5.3 スタディノートのエラーとログ

Dec 22, 2016 pm 03:56 PM

1. はじめに

Laravel はデフォルトで、AppExceptionsHandler クラスで例外をトリガーし、ユーザーに応答を返します。このチュートリアルでは、このクラスを詳しく見ていきます。

さらに、Laravel は Monolog ログ ライブラリも統合し、さまざまな強力なログ プロセッサを提供します。デフォルトで、Laravel は単一のログ ファイルを選択するか、システム ログにエラー情報を記録することができます。

2.

エラー詳細表示を構成する

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

ローカル開発の場合は、環境変数 APP_DEBUG を true に設定する必要があります。運用環境では、この値を false に設定する必要があります。運用環境で true に設定すると、一部の機密構成値がエンド ユーザーに公開される可能性があります。

ログストレージ

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

'log' => 'daily'

ログファイルの最大ライフサイクル

日次ログモードを使用する場合、Laravel はデフォルトで過去 5 日間のログを保持します。今回変更したい場合は、アプリ設定ファイルに設定 log_max_files を追加する必要があります:

' log_max_files' => 30

ログエラーレベル

Monologを使用する場合、デフォルトでは、Laravelはすべてのログをストレージディレクトリに書き込みますが、運用環境では、最小値を設定することをお勧めします。これは、設定ファイル app.php に設定項目 log_level を追加することで実現できます。

この設定項目が設定されると、Laravel は、この指定されたレベル以上のエラー レベルを持つすべてのログを記録します。たとえば、デフォルトの log_level が error の場合、エラー、クリティカル、アラート、および緊急レベルのログ情報が記録されます。記録:

'log_level ' => env('APP_LOG_LEVEL', 'error'),

注: Monolog は、デバッグ、情報、通知、警告、エラー、クリティカル、アラート、緊急のエラー レベルをサポートしています。
カスタマイズされた Monolog 構成

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

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

3. 例外ハンドラー

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

レポート メソッド

レポート メソッドは、例外を記録し、それらを Bugsnag や Sentry などの外部サービスに送信するために使用されます。もちろん、レポート メソッドは、例外が記録される基本クラスに例外を渡すだけです。独自のニーズに応じて例外を記録し、それに応じて処理することもできます。

たとえば、異なるタイプの例外を異なる方法で報告する必要がある場合は、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 エラー例外はログ ファイルに書き込まれません。必要に応じて、他の例外タイプをこの配列に追加できます。

render メソッド

render メソッドは、定義された例外を提供します。デフォルトでは、例外は応答を生成する基本クラスに渡されます。もちろん、独自のニーズに応じて例外タイプを確認したり、カスタム応答を返すこともできます。

/**
 * A list of the exception types that should not be reported.
 *
 * @var array
 */
protected $dontReport = [
  \Illuminate\Auth\AuthenticationException::class,
  \Illuminate\Auth\Access\AuthorizationException::class,
  \Symfony\Component\HttpKernel\Exception\HttpException::class,
  \Illuminate\Database\Eloquent\ModelNotFoundException::class,
  \Illuminate\Validation\ValidationException::class,
];
ログイン後にコピー

4. HTTP 例外


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

。 abort(404);


abort メソッドは、例外ハンドラーによってレンダリングされる例外を直ちに発生させます:

abort(403, 'Unauthorized action.') のような応答の説明を指定することもできます。 ;


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

カスタム HTTP エラー ページ

Laravel では、さまざまな HTTP ステータス コードを含むエラー ページを返すのは簡単です。たとえば、404 エラー ページをカスタマイズしたい場合は、 resource/views/errors/404.blade.php ファイルを作成します。このビュー ファイルは、プログラムから返されるすべての 404 エラーをレンダリングするために使用されます。このディレクトリ内のビューの名前は、対応する HTTP ステータス コードと一致する必要があることに注意してください。

5. Log


Laravel は、強力な Monolog ライブラリに基づいたシンプルなログ抽象化レイヤーを提供します。デフォルトでは、Laravel は storage/logs ディレクトリに毎日ログ ファイルを生成するように設定されています。ログに情報を記録します:

/**
 * 将异常渲染到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);
}
ログイン後にコピー

ロガーは、RFC 5424 で定義されている 8 つのログ レベル (緊急、アラート、クリティカル、エラー、警告、通知、情報、デバッグ) を提供します。

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

コンテキスト情報

コンテキストデータは、配列の形式でフォーマットされ、ログ メッセージとともに表示されます:

Log::info('ユーザーはログインに失敗しました。', ['id' => $user->id]);

基礎となる Monolog インスタンスへのアクセス

Monolog には、ロギングに使用できる複数のプロセッサーがあり、必要に応じて、Laravel によって使用される基礎となる Monolog インスタンスにアクセスできます。 5.3 Study Notes のエラーとログ 関連記事については、PHP 中国語 Web サイトに注目してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)