Php 使用独白和呐喊

Php 使用独白和呐喊,php,exception,monolog,whoops,Php,Exception,Monolog,Whoops,我试图在set\u exception\u处理程序和set\u error\u处理程序中使用独白,同时在外面发出呜呜声 我试过两个地方跑呼呼声 Run-Whoops#1位置 结果:Monolog记录错误/异常,不会显示呜呜声 Run-Whoops#2位置 结果:独白不会记录任何东西,并且会显示呜呜声 我被困在为什么我不能让独白和呐喊一起工作 ... use Whoops\Run; use Whoops\Handler\PrettyPageHandler; error_reporting

我试图在
set\u exception\u处理程序
set\u error\u处理程序
中使用独白,同时在外面发出呜呜声

我试过两个地方跑呼呼声

  • Run-Whoops#1位置
    • 结果:Monolog记录错误/异常,不会显示呜呜声
  • Run-Whoops#2位置
    • 结果:独白不会记录任何东西,并且会显示呜呜声
  • 我被困在为什么我不能让独白和呐喊一起工作

    ...
    use Whoops\Run;
    use Whoops\Handler\PrettyPageHandler;
    
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    //Run Whoops #1 Location
    $whoops = new Run();
    $whoops->prependHandler(new PrettyPageHandler());
    $whoops->register();
    
    function exceptionHandler($e)
    { 
        //log the exception using monolog
    }
    
    function errorHandler($errno, $errstr, $errfile, $errline)
    {
        //log the error using monolog
    }
    
    set_error_handler("errorHandler");
    set_exception_handler('exceptionHandler');
    
    //Run Whoops #2 Location
    
    php中的set_exception_处理函数被Whoops库覆盖。我们可以使用Whoops库的pushHandler方法注册一个通用处理函数,并在该函数内初始化Monolog:

    use Monolog\Formatter\LineFormatter;
    $whoops = new \Whoops\Run;
    $whoops->pushHandler(function($exception, $inspector, $run) {
    
       // Initialise Monolog here. Example with stack trace support:
        $formatter = new LineFormatter(
            LineFormatter::SIMPLE_FORMAT, 
            LineFormatter::SIMPLE_DATE
        );
        $formatter->includeStacktraces(true);
        $errlog = new Logger('Error Log');
        $stream = new StreamHandler("logs/error.log", Logger::ERROR);
        $stream->setFormatter($formatter);
        $errlog->pushHandler($stream);
        $errlog->error($exception);
    
        return Handler::DONE;       
    });
    
    php中的set_exception_处理函数被Whoops库覆盖。我们可以使用Whoops库的pushHandler方法注册一个通用处理函数,并在该函数内初始化Monolog:

    use Monolog\Formatter\LineFormatter;
    $whoops = new \Whoops\Run;
    $whoops->pushHandler(function($exception, $inspector, $run) {
    
       // Initialise Monolog here. Example with stack trace support:
        $formatter = new LineFormatter(
            LineFormatter::SIMPLE_FORMAT, 
            LineFormatter::SIMPLE_DATE
        );
        $formatter->includeStacktraces(true);
        $errlog = new Logger('Error Log');
        $stream = new StreamHandler("logs/error.log", Logger::ERROR);
        $stream->setFormatter($formatter);
        $errlog->pushHandler($stream);
        $errlog->error($exception);
    
        return Handler::DONE;       
    });