保存Whoops PrettyPageHandler的结果

时间:2017-04-24 13:00:35

标签: php whoops

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

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

对于直播,我正在使用CallbackHandler向最终用户显示“用户友好”错误消息。

无论如何将PrettyPageHandler的结果/输出保存到数据库甚至文件系统中?我的想法是向最终用户显示友好的错误页面,但同时使用PrettyPageHandler记录错误,以回顾并调试用户得到的错误。

2 个答案:

答案 0 :(得分:6)

如文档中所述:

$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

EDIT1:

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

答案 1 :(得分:1)

您可以执行以下操作:

<?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);