Buscar..
Observaciones
Recuerde configurar su aplicación para enviar por correo electrónico asegurándose de la configuración correcta de config/mail.php
También verifique para asegurarse de que las variables ENV están configuradas correctamente.
Este ejemplo es una guía y es mínimo. Explora, modifica y diseña la vista como desees. Ajustar el código para satisfacer sus necesidades. Por ejemplo, establece el destinatario en tu archivo .env
Enviar correo electrónico de informe de error
Las excepciones en Laravel son manejadas por App \ Exceptions \ Handler.php
Este archivo contiene dos funciones por defecto. Reportar y renderizar. Solo usaremos la primera
public function report(Exception $e)
El método de informe se utiliza para registrar excepciones o enviarlas a un servicio externo como BugSnag. De forma predeterminada, el método de informe simplemente pasa la excepción a la clase base donde se registra la excepción. Sin embargo, usted es libre de registrar excepciones como desee.
Esencialmente esta función simplemente reenvía el error y no hace nada. Por lo tanto, podemos insertar lógica de negocios para realizar operaciones basadas en el error. Para este ejemplo, le enviaremos un correo electrónico con la información del error.
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);
}
La vista para el correo electrónico ("emails.exception_notif") está abajo.
<?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>
Captura de toda la aplicación ModelNotFoundException
aplicación \ Excepciones \ Handler.php
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException) {
abort(404);
}
return parent::render($request, $exception);
}
Puede capturar / manejar cualquier excepción que se lance en Laravel.