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 |