Beispiel #1
0
 /**
  * Write a message to the log.
  *
  * @param array $event log data event
  */
 protected function doWrite(array $event)
 {
     $priority = $this->priorityMap[$event['priority']];
     $extra = $event['extra'];
     if ($extra instanceof Traversable) {
         $extra = iterator_to_array($extra);
     } elseif (!is_array($extra)) {
         $extra = [];
     }
     if ($this->contextContainsException($extra)) {
         /** @var \Throwable $exception */
         $exception = $extra['exception'];
         unset($extra['exception']);
         if ($event['message'] !== $exception->getMessage()) {
             $exception = new ContextException($event['message'], $exception->getCode(), $exception);
         }
         $this->client->getRaven()->captureException($exception, ['extra' => $this->sanitizeContextData($extra), 'level' => $priority]);
         return;
     }
     $stack = isset($extra['stack']) && is_array($extra['stack']) ? $extra['stack'] : null;
     if (!$stack) {
         $stack = $this->cleanBacktrace(debug_backtrace());
         if (!count($stack)) {
             $stack = false;
         }
     }
     $this->client->getRaven()->captureMessage($event['message'], $this->sanitizeContextData($extra), $priority, $stack);
 }
Beispiel #2
0
 /**
  * Logs with an arbitrary level.
  *
  * @param mixed  $level
  * @param string $message
  * @param array  $context
  *
  * @throws InvalidArgumentException
  */
 public function log($level, $message, array $context = [])
 {
     if (!array_key_exists($level, $this->psrPriorityMap)) {
         throw new InvalidArgumentException(sprintf('$level must be one of PSR-3 log levels; received %s', var_export($level, 1)));
     }
     if (is_object($message) && !method_exists($message, '__toString')) {
         throw new InvalidArgumentException('$message must implement magic __toString() method');
     }
     $priority = $this->psrPriorityMap[$level];
     if ($this->objectIsThrowable($message)) {
         /* @var \Throwable $message */
         $this->getRavenClient()->captureException($message, ['extra' => $this->sanitizeContextData($context), 'level' => $priority]);
         return;
     }
     $message = (string) $message;
     if ($this->contextContainsException($context)) {
         /** @var \Throwable $exception */
         $exception = $context['exception'];
         unset($context['exception']);
         $message = $this->interpolate($message, $context);
         $exception = new ContextException($message, $exception->getCode(), $exception);
         $this->getRavenClient()->captureException($exception, ['extra' => $this->sanitizeContextData($context), 'level' => $priority]);
         return;
     }
     $this->getRavenClient()->captureMessage($this->interpolate($message, $context), ['extra' => $this->sanitizeContextData($context)], $priority);
 }