Esempio n. 1
0
 /**
  * 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);
     }
 }