Chris@0: config = $config_factory->get('syslog.settings'); Chris@0: $this->parser = $parser; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Opens a connection to the system logger. Chris@0: */ Chris@0: protected function openConnection() { Chris@0: if (!$this->connectionOpened) { Chris@0: $facility = $this->config->get('facility'); Chris@0: $this->connectionOpened = openlog($this->config->get('identity'), LOG_NDELAY, $facility); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function log($level, $message, array $context = []) { Chris@0: global $base_url; Chris@0: Chris@0: // Ensure we have a connection available. Chris@0: $this->openConnection(); Chris@0: Chris@0: // Populate the message placeholders and then replace them in the message. Chris@0: $message_placeholders = $this->parser->parseMessagePlaceholders($message, $context); Chris@0: $message = empty($message_placeholders) ? $message : strtr($message, $message_placeholders); Chris@0: Chris@0: $entry = strtr($this->config->get('format'), [ Chris@0: '!base_url' => $base_url, Chris@0: '!timestamp' => $context['timestamp'], Chris@0: '!type' => $context['channel'], Chris@0: '!ip' => $context['ip'], Chris@0: '!request_uri' => $context['request_uri'], Chris@0: '!referer' => $context['referer'], Chris@14: '!severity' => $level, Chris@0: '!uid' => $context['uid'], Chris@0: '!link' => strip_tags($context['link']), Chris@0: '!message' => strip_tags($message), Chris@0: ]); Chris@0: Chris@0: $this->syslogWrapper($level, $entry); Chris@0: } Chris@0: Chris@0: /** Chris@0: * A syslog wrapper to make syslog functionality testable. Chris@0: * Chris@0: * @param int $level Chris@0: * The syslog priority. Chris@0: * @param string $entry Chris@0: * The message to send to syslog function. Chris@0: */ Chris@0: protected function syslogWrapper($level, $entry) { Chris@0: syslog($level, $entry); Chris@0: } Chris@0: Chris@0: }