class GelfLog in GELF 8
Hierarchy
- class \Drupal\gelf\Logger\GelfLog implements \Psr\Log\LoggerInterface uses RfcLoggerTrait
 
Expanded class hierarchy of GelfLog
1 string reference to 'GelfLog'
1 service uses GelfLog
File
- src/
Logger/ GelfLog.php, line 13  
Namespace
Drupal\gelf\LoggerView source
class GelfLog implements LoggerInterface {
  use RfcLoggerTrait;
  /**
   * {@inheritdoc}
   */
  public function log($level, $message, array $context = array()) {
    if (!gelf_require()) {
      if (function_exists('user_access') && user_access('administer gelf')) {
        drupal_set_message(t('GELF module requires the GELF PHP library to be installed.  View the README for installation instructions.'), 'error');
      }
      return;
    }
    $settings = \Drupal::config('gelf.settings');
    $host = $settings
      ->get('gelf_host');
    $port = $settings
      ->get('gelf_port');
    // Remove any backtraces since they may contain an unserializable variable.
    unset($context['backtrace']);
    // Convert PSR3-style messages to SafeMarkup::format() style, so they can be
    // translated too in runtime.
    $parser = new LogMessageParser();
    $message_placeholders = $parser
      ->parseMessagePlaceholders($message, $context);
    foreach ($message_placeholders as $key => $value) {
      $message = str_replace($key, $value, $message);
    }
    $transport = new UdpTransport($host, $port, UdpTransport::CHUNK_SIZE_LAN);
    // Now we can create custom messages and publish them.
    $gelf = new Message();
    $short_msg_length = 100;
    if (strlen($message) > $short_msg_length) {
      $short_message = preg_replace('/\\s+?(\\S+)?$/u', '', substr($message, 0, $short_msg_length));
    }
    else {
      $short_message = $message;
    }
    $username = $context['user']
      ->getDisplayName();
    $gelf
      ->setShortMessage($short_message);
    $gelf
      ->setFullMessage($message);
    $gelf
      ->setHost(Unicode::substr($context['ip'], 0, 128));
    $gelf
      ->setFacility(Unicode::substr($context['channel'], 0, 64));
    $gelf
      ->setLevel($level);
    $gelf
      ->setTimestamp($context['timestamp']);
    $gelf
      ->setAdditional("Referer", $context['referer']);
    $gelf
      ->setAdditional("Link", $context['link']);
    $gelf
      ->setAdditional("Username", $username);
    $gelf
      ->setAdditional("Uid", $context['uid']);
    $gelf
      ->setAdditional("Request_uri", $context['request_uri']);
    $gelf
      ->setAdditional("Request_method", $_SERVER['REQUEST_METHOD']);
    $gelf
      ->setAdditional("Server_host", $_SERVER['HTTP_HOST']);
    $gelf
      ->setAdditional("Client_host", $context['ip']);
    try {
      $publisher = new Publisher();
      $publisher
        ->addTransport($transport);
      $publisher
        ->publish($gelf);
    } catch (UnexpectedValueException $e) {
      if (function_exists('user_access') && user_access('administer gelf')) {
        drupal_set_message(t('Failed to publish gelf message: %message', array(
          '%message' => $e
            ->getMessage(),
        )), 'error');
      }
    }
  }
}Members
| 
            Name | 
                  Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| 
            GelfLog:: | 
                  public | function | 
            Overrides RfcLoggerTrait:: | 
                  |
| 
            RfcLoggerTrait:: | 
                  public | function | ||
| 
            RfcLoggerTrait:: | 
                  public | function | ||
| 
            RfcLoggerTrait:: | 
                  public | function | ||
| 
            RfcLoggerTrait:: | 
                  public | function | ||
| 
            RfcLoggerTrait:: | 
                  public | function | ||
| 
            RfcLoggerTrait:: | 
                  public | function | ||
| 
            RfcLoggerTrait:: | 
                  public | function | ||
| 
            RfcLoggerTrait:: | 
                  public | function |