Zoeken…


Opmerkingen

Vergeet niet om uw toepassing in te stellen voor e-mailen door te zorgen voor de juiste configuratie van config/mail.php

Controleer ook of de ENV-variabelen correct zijn ingesteld.

Dit voorbeeld is een richtlijn en is minimaal. Verken, wijzig en stijl de weergave naar wens. Pas de code aan om aan uw behoeften te voldoen. Stel bijvoorbeeld de ontvanger in uw .env- bestand in

Verzend foutrapport e-mail

Uitzonderingen in Laravel worden afgehandeld door App \ Exceptions \ Handler.php

Dit bestand bevat standaard twee functies. Melden en weergeven. We zullen alleen de eerste gebruiken

 public function report(Exception $e)

De rapportmethode wordt gebruikt om uitzonderingen te loggen of naar een externe service zoals BugSnag te verzenden. Standaard geeft de rapportmethode de uitzondering eenvoudig door aan de basisklasse waar de uitzondering is vastgelegd. U bent echter vrij om uitzonderingen te registreren zoals u dat wenst.

In wezen stuurt deze functie de fout gewoon door en doet niets. Daarom kunnen we bedrijfslogica invoegen om bewerkingen uit te voeren op basis van de fout. Voor dit voorbeeld sturen we een e-mail met de foutinformatie.

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

De weergave voor de e-mail ("emails.exception_notif") is hieronder

<?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>

Toepassing brede ModelNotFoundException vangen

app \ Uitzonderingen \ Handler.php

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

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

Je kunt elke uitzondering vangen / verwerken die in Laravel wordt gegooid.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow