/**
  * @author David Grudl
  * @see    https://github.com/nette/tracy
  */
 protected function logException(Throwable $exception) : array
 {
     $file = $this->getExceptionFile($exception);
     if ($handle = @fopen($file, 'x')) {
         // @ file may already exist
         ob_start();
         // double buffer prevents sending HTTP headers in some PHP
         ob_start(function ($buffer) use($handle) {
             fwrite($handle, $buffer);
         }, 4096);
         $this->blueScreen->render($exception);
         ob_end_flush();
         ob_end_clean();
         fclose($handle);
         return [true, $file];
     } else {
         return [false, $file];
     }
 }
 public static function onException($exception)
 {
     ob_start();
     // double buffer prevents sending HTTP headers in some PHP
     ob_start();
     $bs = new BlueScreen();
     $bs->render($exception);
     $report = ob_get_contents();
     ob_end_clean();
     ob_end_clean();
     self::saveReport($exception->getMessage(), $report);
 }
示例#3
0
 /**
  * Renders blue screen.
  *
  * @param  \Exception|\Throwable
  *
  * @return void
  */
 public function render($exception)
 {
     if (isset($this->sslAuthorizedDn['emailAddress']) && !in_array($this->sslAuthorizedDn['emailAddress'], $this->logIgnoreEmail) && in_array($this->siteMode, ['public', 'ssd'])) {
         if ($exception instanceof \ErrorException) {
             $severity = $exception->getSeverity();
             Debugger::getLogger()->log($exception, ($severity & Debugger::$logSeverity) === $severity ? Tracy\ILogger::ERROR : Tracy\ILogger::EXCEPTION);
         } else {
             Debugger::getLogger()->log($exception, Tracy\ILogger::EXCEPTION);
         }
     }
     parent::render($exception);
 }