Я хочу зарегистрировать 404 ошибки в Laravel 5.7, но я не понимаю, как это включить.В дополнение к регистрации 404 ошибок, я хотел бы зарегистрировать запрошенный URL.Другие ошибки регистрируются правильно.
.env
APP_DEBUG=true
LOG_CHANNEL=stack
config / logging.php
'stack' => [
'driver' => 'stack',
'channels' => ['daily'],
],
Per Документация по обработке ошибок :
Свойство $ dontReport обработчика исключений содержит массив типов исключений, которые не будут регистрироваться.Например, исключения, возникающие из-за ошибок 404, а также нескольких других типов ошибок, не записываются в ваши файлы журнала.При необходимости вы можете добавить другие типы исключений в этот массив:
В app/Exceptions/Handler
массив $dontReport
пуст.
Я настроил представление 404, имея файл Bladeresources/views/errors/404.blade.php
На основании этого ответа Я пробовал этот код в app/Exceptions/Handler,
, но в журналах ничего не отображается:
public function report(Exception $exception)
{
if ($this->isHttpException($exception)) {
if ($exception instanceof NotFoundHttpException) {
Log::warning($message);
return response()->view('error.404', [], 404);
}
return $this->renderHttpException($exception);
}
parent::report($exception);
}
ОБНОВЛЕНИЕпосле принятия ответа Мозаммила, который работает отлично. Я сократил его ответ до следующего.Не забудьте добавить use Illuminate\Support\Facades\Log
в файл обработчика.
public function render($request, Exception $exception)
{
if ($exception instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException) {
Log::warning('404: ' . $request->url());
return response()->view('errors.404', [], 404);
}
return parent::render($request, $exception);
}