====== 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 !!}