1

我需要通过扩展 rollbar 错误处理程序来创建一个自定义错误处理程序,该处理程序应始终处理致命错误,但仅在我们处于调试模式时才处理通知错误。在生产模式下,所有通知错误都不应该显示在浏览器中,而是应该记录在滚动条中并得到通知。任何人都可以就如何进行这种错误处理提出一个想法吗?

我刚开始扩展 Yii2 基本错误处理程序,

<?php
namespace common\components;
class ErrorHandler extends \yii\web\ErrorHandler
{
    public function register()
    {
        ini_set('display_errors', false);
        set_exception_handler([$this, 'handleException']);
        register_shutdown_function([$this, 'handleFatalError']);
    }
}

使用上面的代码,我可以从浏览器中隐藏通知错误并登录 php 错误日志。现在问题是我需要登录 rollbar 并像往常一样收到通知。

4

1 回答 1

0

我用下面的代码解决了它。

/**
 * Handles PHP execution errors such as warnings and notices.
 *
 * This method is used as a PHP error handler. It will simply raise an [[ErrorException]].
 *
 * @param int $code the level of the error raised.
 * @param string $message the error message.
 * @param string $file the filename that the error was raised in.
 * @param int $line the line number the error was raised at.
 * @return bool whether the normal error handler continues.
 *
 * @throws ErrorException
 */

public function handleError($code, $message, $file, $line)
{
    if (error_reporting() & $code) {
        $exception = new \yii\base\ErrorException($message, $code, $code, $file, $line);
        if (YII_ENV_PROD) {
            $this->logException($exception);
        } else {
            throw $exception;
        }
    }
    return false;
}
于 2018-07-19T16:29:22.240 回答