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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow