10

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

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

对于现场,我使用 CallbackHandler 向最终用户显示“用户友好”错误消息。

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

4

2 回答 2

8

如文档中所述:

$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 扩展的自定义处理程序,并在句柄在将响应返回给用户之前返回格式化响应的地方,以所需的格式保存在数据库或文件系统中。

于 2017-05-07T18:25:18.760 回答
2

你可以这样做:

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

于 2018-11-27T19:13:47.800 回答