/** * Log a message to the logs. * * @param string $level * @param mixed $message * @param array $context * * @return void */ public function log($level, $message, array $context = []) { if (isset($context['title'])) { $title = $context['title']; unset($context['title']); } $msg = $this->formatMessage($message); $title = $this->limit(isset($title) ? $title : (string) $msg); if ($level === 'debug' || $level === 'info') { if ($message instanceof Exception || $message instanceof Throwable) { $title = get_class($message); $data = ['name' => $title, 'message' => $message->getMessage()]; } else { $data = ['message' => $message]; } $metaData = array_merge(array_merge($data, ['severity' => $level]), $context); $this->client->leaveBreadcrumb($title, 'log', array_filter($metaData)); return; } $callback = function (Report $report) use($level, $context) { $report->setMetaData($context); $report->setSeverity($this->getSeverity($level)); }; if ($message instanceof Exception || $message instanceof Throwable) { $this->client->notifyException($message, $callback); } else { $this->client->notifyError($title, $msg, $callback); } }