You are here

function elasticsearch_watchdog_watchdog in Elasticsearch Connector 7

Same name and namespace in other branches
  1. 7.5 modules/elasticsearch_watchdog/elasticsearch_watchdog.module \elasticsearch_watchdog_watchdog()
  2. 7.2 modules/elasticsearch_watchdog/elasticsearch_watchdog.module \elasticsearch_watchdog_watchdog()

Implements hook_watchdog().

File

modules/elasticsearch_watchdog/elasticsearch_watchdog.module, line 105
Created on Jan 06, 2014

Code

function elasticsearch_watchdog_watchdog(array $log_entry) {
  global $base_url;
  $user = $GLOBALS['user'];
  $client_id = elasticsearch_watchdog_get_cluster_id();
  if (!empty($client_id)) {
    $client = elasticsearch_connector_get_client_by_id($client_id);
    if ($client) {
      $doc = array();
      $doc['index'] = elasticsearch_watchdog_get_index_name();
      $doc['type'] = elasticsearch_watchdog_get_type_name();

      // Workaround to order the logs if the same timestamp based on microtime.
      $microtime_float = explode('.', microtime(TRUE));
      if (empty($microtime_float[1])) {
        $microtime = '0.0';
      }
      else {
        $microtime = '0.' . $microtime_float[1];
      }
      $doc['body'] = array(
        'uid' => $log_entry['uid'],
        'username' => user_is_logged_in() ? $user->name : 'Anonymous',
        'type' => substr($log_entry['type'], 0, 64),
        'message' => $log_entry['message'],
        'full_massage' => format_string($log_entry['message'], (array) $log_entry['variables']),
        'variables' => serialize($log_entry['variables']),
        'severity' => $log_entry['severity'],
        'link' => substr($log_entry['link'], 0, 255),
        'location' => $log_entry['request_uri'],
        'referer' => $log_entry['referer'],
        'hostname' => substr($log_entry['ip'], 0, 128),
        'timestamp' => $log_entry['timestamp'],
        'microtime' => (double) $microtime,
        'domain' => $base_url,
        'date' => date('c', $log_entry['timestamp']),
        '_ttl' => variable_get('elasticsearch_watchdog_ttl', ELASTICSEARCH_WATCHDOG_DEFAULT_INTERVAL),
      );

      // Indexing document.
      try {
        $ret = $client
          ->index($doc);
      } catch (Exception $e) {
        error_log($e
          ->getMessage());
      }
    }
  }
}