2013-11-26 120 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} [] [] 

這告訴你什麼都沒有,只是浪費磁盤空間。

如何找到導致NotFoundHttpException的URI?

+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); 
}); 

現在你得到的URL的additinal日誌條目:

[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 
}); 
相關問題