/** * Exports log [[messages]] to a specific destination. */ public function export() { foreach ($this->messages as $message) { list($msg, $level, $category, $timestamp, $traces) = $message; $levelName = Logger::getLevelName($level); if (!in_array($levelName, ['error', 'warning', 'info'])) { $levelName = 'error'; } if (is_array($msg)) { if (isset($msg['data'])) { $new_extras = $msg['data']; unset($msg['data']); } if (isset($msg['msg'])) { $new_msg = $msg['msg']; unset($msg['msg']); } else { $new_msg = 'Unknown event format'; // deliver event data even if the format doesn't fit $new_extras = array_merge($new_extras, $msg); $new_tags = ['format' => 'unknown']; } } $data = ['timestamp' => gmdate('Y-m-d\\TH:i:s\\Z', $timestamp), 'level' => $levelName, 'tags' => ['category' => $category], 'message' => isset($new_msg) ? $new_msg : $msg]; if (isset($new_tags)) { $data['tags'] = array_merge($new_tags, $this->client->get_tags(), $this->client->context->extra); } if (isset($new_extras)) { $data['extra'] = array_merge($new_extras, $this->client->tags, $this->client->context->tags); } if (!empty($traces)) { $data['sentry.interfaces.Stacktrace'] = ['frames' => Raven_Stacktrace::get_stack_info($traces)]; } $this->client->capture($data, false); } }