2012-12-04 94 views
0

在laravel中,我想更改錯誤消息並將其記錄爲404和500事件。我嘗試了404事件event.php事件監聽器,Laravel - 處理500錯誤消息

Event::listen('404', function() 
{ 
Log::write('404', 'Could not find : '.URL::full()); 
return Response::error('404'); 
}); 

這對我工作很好。並用當前的URL記錄錯誤消息。但對於500錯誤,我也想記錄stacktrace太..我想日誌消息,如「500 - 未捕獲的異常:'exception_message_and_stack_trace'」

如何獲取事件監聽器中的stacktrace字符串..是否有可能?對不起,如果我不明白laravel的任何基本的東西。

回答

0

404和500事件並沒有太多關於引發錯誤的信息,所以你不能在那裏做一個堆棧跟蹤。它們基本上只是用於公共消息的用戶,他們可能會碰到不應該的東西。

對於日誌記錄,你應該在config/error.php中使用logger閉包,用你自己的日誌邏輯填充閉包,它可以訪問異常對象。

0

在Laravel論壇上有一個關於Laravel活動的粘性話題。您可以查看列表here

+0

謝謝你的回覆..所以500事件監聽器沒有任何正確的..然後有任何其他方式來解決這個問題。我只是想記錄與堆棧跟蹤 – viji

+0

錯誤消息要收聽事件: 事件::聽( '500',函數($ R){ \t DD($ R); \t返回響應::錯誤('500'); }); 要觸發新事件: 事件:: fire(500,array('Uncaught Exception:exception_message_and_stack_trace')); –

0

嘗試將代碼添加到application/config/error.php。通過在該文件中將「log」設置爲true來啓用日誌記錄。然後在底部添加一個調用日誌:: write()方法是這樣的:

'logger' => function($exception) 
    { 
      Log::write('error', $exception); 
      Log::exception($exception); 
    }, 

這將使例外存儲/日誌/ YYYY-MM-DD.log顯示出來。您也可以將它們寫出到數據庫表中,或者通過更改本節來通過電子郵件發送它們。