【问题标题】:Laravel - Handling 500 error messageLaravel - 处理 500 错误消息
【发布时间】:2012-12-04 07:55:59
【问题描述】:

在 laravel 中,我想更改错误消息并将其记录为 404 和 500 事件。我在 routes.php 中通过事件监听器尝试了 404 事件,

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

这对我来说很好。并使用当前 url 记录错误消息。但是对于 500 个错误,我也想记录堆栈跟踪。我想要像“500 - 未捕获的异常:'exception_message_and_stack_trace'”这样的日志消息

如何在事件侦听器中获取堆栈跟踪字符串。这可能吗?对不起,如果我不了解 laravel 的任何基本内容。

【问题讨论】:

    标签: logging laravel


    【解决方案1】:

    404 和 500 事件没有太多关于引发它们的错误的信息,因此您无法真正在那里进行堆栈跟踪。它们基本上只用于用户的公共信息,用户可能会碰到不应该的东西。

    对于日志记录,您应该在 config/error.php 中使用 logger 闭包,用您自己的日志记录逻辑填充闭包,它可以访问异常对象。

    【讨论】:

      【解决方案2】:

      在 Laravel 论坛上有一个关于 Laravel 事件的热门话题。您可以查看列表here

      【讨论】:

      • 感谢您的回复.. 所以 500 事件监听器没有任何参数正确.. 那么有没有其他方法可以解决这个问题。我只是想用堆栈跟踪记录错误消息
      • 监听事件:Event::listen('500', function($r) { dd($r); return Response::error('500'); });触发新事件:Event::fire(500, array('Uncaught Exception: exception_message_and_stack_trace'));
      【解决方案3】:

      尝试将代码添加到 application/config/error.php。通过在该文件中将 'log' 设置为 true 来启用日志记录。然后在底部添加对 Log::write() 的调用,如下所示:

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

      这将使异常显示在 storage/logs/YYYY-MM-DD.log 中。您还可以将它们写到数据库表中,或者通过更改此部分来通过电子邮件发送它们。

      【讨论】:

        猜你喜欢
        • 2020-03-20
        • 1970-01-01
        • 2018-01-09
        • 2019-06-21
        • 2015-11-18
        • 2016-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多