Suche…


Bemerkungen

Denken Sie daran, Ihre Anwendung für den E-Mail- config/mail.php einzurichten, indem Sie die korrekte Konfiguration von config/mail.php

Überprüfen Sie auch, ob die ENV-Variablen richtig eingestellt sind.

Dieses Beispiel ist ein Leitfaden und ist minimal. Untersuchen, ändern und gestalten Sie die Ansicht wie gewünscht. Passen Sie den Code an Ihre Bedürfnisse an. Legen Sie beispielsweise den Empfänger in Ihrer .env- Datei fest

Fehlerbericht-E-Mail senden

Ausnahmen in Laravel werden von App \ Exceptions \ Handler.php behandelt

Diese Datei enthält standardmäßig zwei Funktionen. Berichten und Rendern Wir werden nur die erste verwenden

 public function report(Exception $e)

Mit der Report-Methode werden Ausnahmen protokolliert oder an einen externen Dienst wie BugSnag gesendet. Standardmäßig übergibt die Berichtsmethode die Ausnahme einfach an die Basisklasse, in der die Ausnahme protokolliert wird. Sie können jedoch Ausnahmen beliebig protokollieren.

Im Wesentlichen leitet diese Funktion den Fehler weiter und tut nichts. Daher können wir eine Geschäftslogik einfügen, um Operationen basierend auf dem Fehler auszuführen. Für dieses Beispiel senden wir eine E-Mail mit den Fehlerinformationen.

public function report(Exception $e)
{
    if ($e instanceof \Exception) {
        // Fetch the error information we would like to 
        // send to the view for emailing
        $error['file']    = $e->getFile();
        $error['code']    = $e->getCode();
        $error['line']    = $e->getLine();
        $error['message'] = $e->getMessage();
        $error['trace']   = $e->getTrace();

        // Only send email reports on production server
        if(ENV('APP_ENV') == "production"){
            #1. Queue email for sending on "exceptions_emails" queue
            #2. Use the emails.exception_notif view shown below
            #3. Pass the error array to the view as variable $e
            Mail::queueOn('exception_emails', 'emails.exception_notif', ["e" => $error], function ($m) {
                $m->subject("Laravel Error");
                $m->from(ENV("MAIL_FROM"), ENV("MAIL_NAME"));
                $m->to("[email protected]", "Webmaster");
            });

        }
    }

    // Pass the error on to continue processing
    return parent::report($e);
}

Die Ansicht für die E-Mail ("emails.exception_notif") befindet sich unten

<?php 
$action = (\Route::getCurrentRoute()) ? \Route::getCurrentRoute()->getActionName() : "n/a";
$path = (\Route::getCurrentRoute()) ? \Route::getCurrentRoute()->getPath() : "n/a";
$user = (\Auth::check()) ? \Auth::user()->name : 'no login';
?>

There was an error in your Laravel App<br />

<hr />
<table border="1" width="100%">
    <tr><th >User:</th><td>{{ $user }}</td></tr>
    <tr><th >Message:</th><td>{{ $e['message'] }}</td></tr>
    <tr><th >Action:</th><td>{{ $action }}</td></tr>
    <tr><th >URI:</th><td>{{ $path }}</td></tr>
    <tr><th >Line:</th><td>{{ $e['line'] }}</td></tr>
    <tr><th >Code:</th><td>{{ $e['code'] }}</td></tr>
</table>

Anwendungsweite ModelNotFoundException abfangen

app \ Exceptions \ Handler.php

public function render($request, Exception $exception)
{
    if ($exception instanceof ModelNotFoundException) {
        abort(404);
    }

    return parent::render($request, $exception);
}

Sie können jede in Laravel geworfene Ausnahme abfangen / behandeln.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow