2012-12-04 134 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显示出来。您也可以将它们写出到数据库表中,或者通过更改本节来通过电子邮件发送它们。