Logs et Erreurs

Pour avoir un peu plus d’infos sur les erreurs et être avertis par mail en prod, j’ai remplacé un bout de code dans le fichier app/start/global.php

App::error(function(Exception $exception, $code)
{
	Log::error($exception);
});

par

App::error(function(Exception $exception, $code)
{
        Log::error($exception);
        Log::error(print_r($_SERVER,true));
        if (App::environment('prod')){
                Mail::send(['text'=>'emails.rapport'], ['contenu'=>$exception."\n".print_r($_SERVER,true)], function($m)
                {
                    $m->to('bug@mail.com')->subject('[edmc73] BUG sur site');
                });
        }
});

Il faut aussi penser à faire une mini vue que nous mettrons dans app/views/emails/rapport.php avec ce code

<?=$contenu?>

Sur laravel 5

Pour recevoir un mail lorsqu’une exception est déclenché, modifiez la méthode report du fichier app/Exceptions/Handler.php

    public function report(Exception $exception)
    {
        if ($this->shouldReport($exception)) {
 
            $debugSetting = config('app.debug');
 
            config(['app.debug'=> true]);
            if (ExceptionHandler::isHttpException($exception)) {
                $content = ExceptionHandler::toIlluminateResponse(ExceptionHandler::renderHttpException($exception), $exception);
            } else {
                $content = ExceptionHandler::toIlluminateResponse(ExceptionHandler::convertExceptionToResponse($exception), $exception);
            }
 
            config(['app.debug'=> $debugSetting]);
 
            $data['content'] = (!isset($content->original)) ? $exception->getMessage() : $content->original;
 
            \Mail::send(
                ['html' => 'emails.exception'],
                ['content' => $data['content']],
                function ($m) {
                    $m->from(['support@domaine.com']);
                    $m->to(['moi@domaine.com']);
                    $m->subject('Crash Report : '.config('app.name'));
                }
            );
        }
        parent::report($exception);
    }

Créez une petite vue resources/views/emails/exception.blade.php

{!! $content !!}