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.