保存 Whoops PrettyPageHandler 的结果

Save the result of Whoops PrettyPageHandler

我在 dev 上使用 Whoops 错误库(并且喜欢它)来显示 PrettyPageHandler,如下所示:

if (ENVIRONMENT == 'local') {
    $whoops = new \Whoops\Run;
    $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
    $whoops->register();
}

对于直播,我使用 CallbackHandler 向最终用户显示 "user friendly" 错误消息。

有没有办法将 PrettyPageHandler 的 result/output 保存到数据库甚至文件系统中?我的想法是向最终用户显示友好的错误页面,但同时使用 PrettyPageHandler 记录错误以回顾和调试用户遇到的错误。

如文档中所述:

$run->pushHandler(function($exception, $inspector, $run) {
    var_dump($exception->getMessage());
    return Handler::DONE;
});

用您的自定义代码替换 var_dump($exception->getMessage()); 以保存到数据库或文件日志。

https://github.com/filp/whoops/blob/master/docs/API%20Documentation.md#core-handlers-1

编辑 1:

要使用 PrettyPageHandler 保存日志,创建一个从 PrettyPageHandler 扩展的自定义处理程序,并在 return 处理 return 对用户的响应之前的格式化响应的地方,保存以所需格式在数据库或文件系统中。

你可以这样做:

<?php

class PrettyErrorLogger extends \Whoops\Handler\PrettyPageHandler
{
    public function handle()
    {
        parent::handle();
        $output = ob_get_clean();

        file_put_contents('error.log', $output); // or replace with DB insert
    }
}

然后将其用作处理程序

$whoops->pushHandler(new PrettyErrorLogger);