Heim  >  Artikel  >  PHP-Framework  >  So beheben Sie Laravel-Fehler

So beheben Sie Laravel-Fehler

WBOY
WBOYOriginal
2023-05-26 14:49:07960Durchsuche

Im Entwicklungsprozess mit dem Laravel-Framework treten zwangsläufig verschiedene Fehler oder Ausnahmen auf. Die schnelle Behebung von Fehlern und die Lösung von Problemen ist eine Herausforderung für Basisentwickler. Dieser Artikel stellt Ihnen die Fehlerbehebungsmethoden für Laravel-Fehler vor und hilft Ihnen, während des Entwicklungsprozesses mit halbem Aufwand das doppelte Ergebnis zu erzielen.

1. Protokollierung

Laravel zeichnet Protokollinformationen in verschiedenen Dateien entsprechend den verschiedenen Ebenen (Debug, Info, Hinweis, Warnung, Fehler, kritisch, Warnung, Notfall) auf. Mithilfe der Protokolldateien können wir Fehler im Code schnell finden.

1.1 Sehen Sie sich die Protokolldatei an

Öffnen Sie das Verzeichnis storage/logs im Projektstammverzeichnis und Sie können die Datei laravel.log sehen. Dies ist die gesamte Protokolldatei von Alle Protokollebenen im System können Sie in der Datei config/logging.php konfigurieren. In der Protokolldatei können Sie filtern und anzeigen Fehlerinformationen basierend auf Zeit, Prozess, Füllstand und anderen Bedingungen. Die spezifische Verwendung ist wie folgt:

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 Level-Einstellung

Über das Verzeichnis app/Exceptions/Handler.php, das mit Laravel geliefert wird, können Sie die Protokollebene sehen wird in report () festgelegt. Im ersten Parameter der Funktion ist Laravels Standardprotokollstufe „Fehler“, was bedeutet, dass nur Protokolle mit Fehlerstufe und höher in der Protokolldatei app/public/storage/logs/laravel.log aufgezeichnet werden.

Wenn Sie Protokolle aller Warnstufen und höher in die Protokolldatei schreiben möchten, können Sie die Startstufe im ersten Parameter der Funktion report() hinzufügen, wie unten gezeigt:

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

    parent::report($exception);
}

Durch die Operation Log::channel('daily')->warning() werden die Fehlerinformationen und die Fehlerstufe in das Protokoll geschrieben, und die Methode ShouldReport() wird verwendet, um zu bestimmen, ob das Protokoll erstellt werden muss geschrieben.

2. Ausnahmebehandlung

In Laravel-Anwendungen ist die Möglichkeit, benutzerdefinierte Ausnahmen auszulösen, sehr einfach. Gehen Sie einfach wie folgt vor:

#🎜🎜 #2.1 Benutzerdefinierte Ausnahme

Erstellen Sie eine neue Ausnahmeklasse und erben Sie die Standard-Ausnahmeklasse von Laravel, wie unten gezeigt:

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);
    }
}

Im Konstruktor können wir Ausnahmeinformationen und Statuscodes definieren und den Fehler aufzeichnen Melden Sie sich in der Methode „report()“ an und geben Sie die Ausnahmeinformationen und den Statuscode im JSON-Format in der Methode „render()“ zurück.

Wenn in der Anwendung eine CustomException auftritt, führt Laravel automatisch die Methode report() aus, um die Fehlerinformationen in der Protokolldatei aufzuzeichnen, und gibt die Ausnahmeinformationen über die Methode render() an das Frontend zurück zur Anzeige.

2.2 Ausnahme auslösen

Verwenden Sie die Methode throw new CustomException () im Code, um eine Ausnahme auszulösen, wie unten gezeigt:

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

3. Fehler-Debugging

Beim Entwickeln oder Testen ist es manchmal notwendig, Debugging-Informationen in den Code einzugeben, um das Problem zu finden. In Laravel können wir die Funktionen dump() und dd() verwenden, um das Debugging schnell auszugeben Informationen und Ergebnisse der Programmausführung unterbrechen.

3.1 dump() und dd()

dump()-Funktion wird verwendet, um den Inhalt von Variablen oder Arrays zu drucken, ohne die Ausführung des Programms zu unterbrechen. Ähnlich der in PHP integrierten Funktion var_dump().

dd() Funktion druckt nicht nur den Inhalt der Variablen oder des Arrays, sondern unterbricht auch die Ausführung des Programms und zeigt den bis zur aktuellen Position verarbeiteten Codestapel und die spezifischen Informationen der Ausnahme an . Ähnlich den in PHP integrierten Funktionen die() oder exit().

Route::get('/test', function () {
    dump('Hello Laravel!');
    return response()->json(['key' => 'value']);
});

Route::get('/test2', function () {
    $array = ['key_one' => 'value_one', 'key_two' => 'value_two'];
    dd($array);
    return response()->json(['key' => 'value']);
});

Im obigen Code verwenden wir die Methoden dump() und dd(), um den Inhalt von Zeichenfolgen und Arrays zu drucken. Die Verwendung ähnelt den nativen PHP-Funktionen, was sehr praktisch ist.

4. Fazit

Während des Entwicklungsprozesses von Laravel werden aus verschiedenen Gründen immer verschiedene Fehlermeldungen angezeigt. Die effiziente Behebung dieser Fehler ist ein Problem, mit dem sich jeder Entwickler auseinandersetzen muss. In diesem Artikel stellen wir verschiedene gängige Methoden zur Fehlerbehebung vor, z. B. die Protokollierung von Laravel, die Ausnahmebehandlung und das Debuggen von Fehlern. Wir hoffen, dass sie Ihnen bei der Entwicklung in Laravel hilfreich sein werden.

Das obige ist der detaillierte Inhalt vonSo beheben Sie Laravel-Fehler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn