Laravel - регистрация "маршрут не найден" - PullRequest
1 голос
/ 17 февраля 2020

Я не вижу никакого вывода журнала, когда маршрут не найден. Я запускаю laravel в режиме разработки и вижу эту ошибку при попадании на несуществующий маршрут.

"message": "",
"exception": 
"Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
"file":
"/var/www/html/Customer_Interface/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php",
"line": 179,

Однако он не отображает какие-либо операции хранения / журналы. Есть ли способ поймать это исключение и записать его туда?

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Laravel по умолчанию не сообщает об этом:

//src/Illuminate/Foundation/Exceptions/Handler.php

/**
     * A list of the internal exception types that should not be reported.
     *
     * @var array
     */
    protected $internalDontReport = [
        AuthenticationException::class,
        AuthorizationException::class,
        HttpException::class,
        HttpResponseException::class,
        ModelNotFoundException::class,
        SuspiciousOperationException::class,
        TokenMismatchException::class,
        ValidationException::class,
    ];

Теперь вы можете в app/Exceptions/Handler.php вы можете импортировать этот массив, затем удалить HttpException и ModelNotFoundException, или что угодно Исключение, которое вам нужно, например


    ...
    // app/Exceptions/Handler.php

    protected $internalDontReport = [
        AuthenticationException::class,
        AuthorizationException::class,
        // HttpException::class,
        HttpResponseException::class,
        // ModelNotFoundException::class,
        SuspiciousOperationException::class,
        TokenMismatchException::class,
        ValidationException::class,    
    ];
    ...

ModelNotFoundException, когда у вас есть маршрут, подобный route::get('/articles/{article}','ArticleController@single');

и назначенный в контроллере как function single(Article $article) и $article не найден.

Выберите, что оставить и что закомментировать.

Второй подход - сделать это в методе report в том же файле Handler.php

 /**
     * Report or log an exception.
     *
     * @param \Exception $exception
     *
     * @return void
     * @throws Exception
     */
    public function report(Exception $exception)
    {

        # Report 404 
        if ($exception instanceof NotFoundHttpException || $exception instanceof ModelNotFoundException) {
             # Log as warning
             Log::warning('Your message');
             # Or Log as info
             Log::info($exception);
             // ...
        }
        ....
     }

Подробнее о входе в систему вы можете узнать здесь Laravel Ведение журнала И Laravel Ошибки

Надеюсь, что это ответ на ваш вопрос!

0 голосов
/ 17 февраля 2020

В Handler.php (в каталоге Exceptions) есть массив $dontReport, который содержит классы исключений, о которых не следует сообщать. Насколько я знаю, указанное NotFoundHttpException указано там по умолчанию. Если вы удалите его из массива, соответствующие исключения должны быть представлены в журналах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...