2016-02-10 48 views
3

我想附加到每個錯誤日誌,錯誤發生之前用戶請求的頁面的網址。日誌已經給我發生錯誤的地方,但是對我知道url是很有價值的。錯誤日誌laravel 5與發生錯誤的網址

我看到有一個Handler.php文件,但我如何在那裏追加url?

回答

9

這是很簡單的,你的應用程序/例外/ Handler.php在頂部的它添加這兩名外援:

use Request; 
use Log; 

然後在您的報告方法,補充一點:

public function report(Exception $e) { 
    Log::info($e->getMessage(), [ 
     'url' => Request::url(), 
     'input' => Request::all() 
    ]); 
    return parent::report($e); 
} 

現在,無論何時出現異常,都會記錄當前網址並請求參數GETPOST也將被記錄:這樣做的

[2016-02-10 19:25:13] local.INFO: Error Processing Request {"url":"http://localhost:8002/list","input":{"name":"fabio","surname":"antunes"}} 
+0

作品像魅力。謝謝你們,非常有用。 – sebasparola

+4

我發現了一個難題:確保在寫入日誌之前從Request :: all()數組中取消設置'password'和'password_confirmation'。主要的安全風險! – Ryan

+0

我認爲最好不要包含輸入,用url +錯誤的行就足以啓動調試 –

0

更好的方法:

應用程序\例外\處理器延長Laravel的基礎上下文()功能:

/** 
* Get the default context variables for logging. 
* 
* @return array 
*/ 
protected function context() 
{ 
    try { 
     return array_filter([ 
      'url' => Request::fullUrl(), 
      'input' => Request::except(['password', 'password_confirmation']), 
      'userId' => Auth::id(), 
      'email' => Auth::user() ? Auth::user()->email : null, 
     ]); 
    } catch (Throwable $e) { 
     return []; 
    } 
}