2013-11-26 6 views
12

Я нашел исключение NotFoundHttpException в журналах. Это выглядит так:laravel-4: Как найти маршрут для NotFoundHttpException?

[2013-11-26 13:49:20] log.ERROR: exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' in /var/www/myproject/vendor/laravel/framework/src/Illuminate/Routing/Router.php:1429 
Stack trace: 
#0 /var/www/myproject/vendor/laravel/framework/src/Illuminate/Routing/Router.php(1050): Illuminate\Routing\Router->handleRoutingException(Object(Symfony\Component\Routing\Exception\ResourceNotFoundException)) 
#1 /var/www/myproject/vendor/laravel/framework/src/Illuminate/Routing/Router.php(1014): Illuminate\Routing\Router->findRoute(Object(Illuminate\Http\Request)) 
#2 /var/www/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(530): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) 
#3 /var/www/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(506): Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request)) 
#4 /var/www/myproject/public/index.php(49): Illuminate\Foundation\Application->run() 
#5 {main} [] [] 

Это ничего не говорит вам и является пустой тратой дискового пространства.

Как найти URI, вызывающий исключение NotFoundHttpException?

+0

Возможные дубликата: http://stackoverflow.com/q/15843265 –

+0

взглянуть на [Контроллеры тестирования Laravel] (HTTP: // сеть .tutsplus.com/учебники/PHP/тестирование-Laravel-контроллеры /). Он показывает вам, как узнать, что пойдет не так, и где это происходит. –

ответ

34

в app/start/global.php продлить App::error():

App::error(function(Exception $exception, $code) 
{ 
    if ($exception instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException) 
    { 
     Log::error('NotFoundHttpException Route: ' . Request::url()); 
    } 

    Log::error($exception); 
}); 

Теперь вы получаете additinal запись журнала с URL:

[2013-11-26 14:20:07] log.ERROR: NotFoundHttpException Route: http://myproject.net/asdfgsdfghsdfg [] [] 
+0

Приятная находка. Не могли бы вы объяснить, почему это должно быть пространство имен? –

+0

@NikosGr В основном потому, что это имя объекта. Если вы посмотрите на 'get_name ($ exception)', оно имеет это пространство имен, а 'instanceof' будет сравниваться с этим именем. – PiTheNumber

+0

@PiTheNumber, ты спас меня! Это сводило меня с ума. – cbloss793

1

Вы можете отфильтровать ошибки 404 (NotFoundHttpException) формируют файл журнала.
Местоположение файла: приложение/старт/global.php

App::error(function(Exception $exception, $errorCode) 
{ 
    $requestUrl = Request::fullUrl(); 
    $userAgent = Request::header('user-agent'); 

    if($errorCode != 404){ 
     Log::error('Exception', array(
      'errorCode' => $errorCode, 
      'requestUrl' => $requestUrl, 
      'userAgent' => $userAgent, 
      'context' => $exception, 
     ));  
    } 

    return Response::view('error-page-path.error-404', array(), 404); 
    // Here "error-404" is a blade view file in "error-page-path" directory 
}); 
Смежные вопросы