ホームページ  >  記事  >  PHPフレームワーク  >  laravelエラーのトラブルシューティング方法

laravelエラーのトラブルシューティング方法

WBOY
WBOYオリジナル
2023-05-26 14:49:07960ブラウズ

Laravel フレームワークを使用した開発プロセスでは、さまざまなエラーや例外が必然的に発生します。エラーのトラブルシューティングを迅速に行い、問題を解決する方法は、基本的な開発者が直面する課題です。この記事では、Laravel エラーのトラブルシューティング方法を紹介し、開発プロセス中の半分の労力で 2 倍の結果を得るのに役立ちます。

1. ロギング

Laravel は、さまざまなレベル (デバッグ、情報、通知、警告、エラー、クリティカル、アラート、緊急) に応じてログ情報をさまざまなファイルに記録します。ログ ファイルを確認すると、コード内のエラーをすぐに見つけることができます。

1.1 ログ ファイルの表示

プロジェクト ルート ディレクトリの storage/logs ディレクトリを開くと、laravel.log ファイルが表示されます。これは、すべてのレベルのログの合計ログ ファイルです。特定のシステムを使用したい場合は、ログ レコードを収集するために config/logging.php ファイルでさまざまなレベルを設定できます;

ログ ファイルでは、時間に基づいてエラー情報をフィルタリングして表示できます。プロセス、レベル、その他の条件。具体的な使い方は以下の通りです。

tail -f storage/logs/laravel.log // 监控最新的日志内容,按Ctrl+C停止
cat storage/logs/laravel.log | grep '关键字' // 搜索包含"关键字"的日志内容
tail -n 100 storage/logs/laravel.log | grep '关键字' // 查看最后100行日志是否包含"关键字"

1.2 レベル設定

Laravelの独自ディレクトリapp/Exceptions/Handler.phpクラスを通して、report()でログレベルが設定されていることがわかります。 function 最初のパラメータでは、Laravel のデフォルトのログ レベルはエラーです。これは、エラー レベル以上のログのみが app/public/storage/logs/laravel.log ログ ファイルに記録されることを意味します。

警告レベル以上のすべてのログをログ ファイルに書き込む場合は、以下に示すように、report() 関数の最初のパラメータに開始レベルを追加できます。 Log::channel('daily')->warning() 操作を通じて、エラー情報とレベルがログに書き込まれ、 shouldReport() メソッドを使用してログを書き込む必要があるかどうかが判断されます。

2. 例外処理

Laravel アプリケーションでカスタム例外をスローする方法は非常に簡単で、次の操作を実行するだけです:

2.1 カスタム例外

以下に示すように、新しい例外クラスを作成し、Laravel のデフォルトの Exception クラスを継承します。

public function report(Exception $exception)
{
    if ($this->shouldReport($exception)) {
        Log::channel('daily')->warning('遇到错误啦!', [
            'error' => $exception->getMessage()
        ]);
    }

    parent::report($exception);
}

構築メソッドでは、例外情報とステータス コードを定義し、report() でレポートできます。メソッド内にログが記録され、render()メソッド内で例外情報とステータスコードがJSON形式で返されます。

アプリケーションでCustomExceptionが発生すると、Laravelは自動的にreport()メソッドを実行してエラー情報をログファイルに記録し、render()メソッドを通じて例外情報をフロントエンドに返します。

2.2 例外をトリガーする

以下に示すように、コード内で throw new CustomException () メソッドを使用して例外をスローします:

namespace AppExceptions;
use Exception;

class CustomException extends Exception
{
    public function __construct($message = null, $code = 0)
    {
        parent::__construct($message, $code); // 调用父类的构造方法
    }
     public function report()
    {
        // 记录错误日志 
        Log::error('CustomException:'.$this->getMessage());
    }

    public function render($request)
    {
        return response()->json(['message' => $this->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
    }
}

3. エラーのデバッグ

開発やテストの際、問題を見つけるためにコードにデバッグ情報を入力する必要がある場合があります。Laravel では、dump() 関数と dd() 関数を使用してデバッグ情報をすばやく出力し、プログラムの実行を中断できます。

3.1 dump() と dd()

dump() 関数は、プログラムの実行を中断せずに変数または配列の内容を出力するために使用されます。 PHP の組み込み var_dump() 関数に似ています。

dd() 関数は、変数または配列の内容を出力するだけでなく、プログラムの実行を中断し、現在位置まで処理されたコード スタックと例外の特定の情報を表示します。 PHP の組み込みの die() 関数または exit() 関数に似ています。

public function test(Request $request)
{
    // ...
    if (! check_validate($request->all())) {
        throw new CustomException('请求参数不正确');
    } 
}

上記のコードでは、dump() メソッドと dd() メソッドを使用して文字列と配列の内容を出力していますが、使い方は PHP のネイティブ関数に似ており、非常に便利です。

4. 結論

Laravel の開発プロセスでは、さまざまな理由でさまざまなエラーメッセージが常に表示されます。これらのエラーを効率的にトラブルシューティングして解決する方法は、すべての開発者が直面しなければならない問題です。この記事では、Laravel のロギング、例外処理、エラーのデバッグなど、一般的なトラブルシューティング方法をいくつか紹介しますので、Laravel で開発する際の参考になれば幸いです。

以上がlaravelエラーのトラブルシューティング方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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