Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 28 |
SysLog | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
56 | |
0.00% |
0 / 28 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
openConnection | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 8 |
|||
log | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 17 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\syslog\Logger\SysLog. | |
*/ | |
namespace Drupal\syslog\Logger; | |
use Drupal\Core\Config\ConfigFactoryInterface; | |
use Drupal\Core\Logger\LogMessageParserInterface; | |
use Drupal\Core\Logger\RfcLoggerTrait; | |
use Psr\Log\LoggerInterface; | |
/** | |
* Redirects logging messages to syslog. | |
*/ | |
class SysLog implements LoggerInterface { | |
use RfcLoggerTrait; | |
/** | |
* A configuration object containing syslog settings. | |
* | |
* @var \Drupal\Core\Config\Config | |
*/ | |
protected $config; | |
/** | |
* The message's placeholders parser. | |
* | |
* @var \Drupal\Core\Logger\LogMessageParserInterface | |
*/ | |
protected $parser; | |
/** | |
* Stores whether there is a system logger connection opened or not. | |
* | |
* @var bool | |
*/ | |
protected $connectionOpened = FALSE; | |
/** | |
* Constructs a SysLog object. | |
* | |
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory | |
* The configuration factory object. | |
* @param \Drupal\Core\Logger\LogMessageParserInterface $parser | |
* The parser to use when extracting message variables. | |
*/ | |
public function __construct(ConfigFactoryInterface $config_factory, LogMessageParserInterface $parser) { | |
$this->config = $config_factory->get('syslog.settings'); | |
$this->parser = $parser; | |
} | |
/** | |
* Opens a connection to the system logger. | |
*/ | |
protected function openConnection() { | |
if (!$this->connectionOpened) { | |
$facility = $this->config->get('facility'); | |
if ($facility === '') { | |
$facility = defined('LOG_LOCAL0') ? LOG_LOCAL0 : LOG_USER; | |
} | |
$this->connectionOpened = openlog($this->config->get('identity'), LOG_NDELAY, $facility); | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function log($level, $message, array $context = array()) { | |
global $base_url; | |
// Ensure we have a connection available. | |
$this->openConnection(); | |
// Populate the message placeholders and then replace them in the message. | |
$message_placeholders = $this->parser->parseMessagePlaceholders($message, $context); | |
$message = empty($message_placeholders) ? $message : strtr($message, $message_placeholders); | |
$entry = strtr($this->config->get('format'), array( | |
'!base_url' => $base_url, | |
'!timestamp' => $context['timestamp'], | |
'!type' => $context['channel'], | |
'!ip' => $context['ip'], | |
'!request_uri' => $context['request_uri'], | |
'!referer' => $context['referer'], | |
'!uid' => $context['uid'], | |
'!link' => strip_tags($context['link']), | |
'!message' => strip_tags($message), | |
)); | |
syslog($level, $entry); | |
} | |
} |