Adding Logger Tests
This commit is contained in:
parent
aee348fa02
commit
f63956851b
|
@ -66,6 +66,12 @@ class SyslogLogger extends AbstractLogger
|
||||||
*/
|
*/
|
||||||
private $logLevel;
|
private $logLevel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A error message of the current operation
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $errorMessage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
* @param string $level The minimum loglevel at which this logger will be triggered
|
* @param string $level The minimum loglevel at which this logger will be triggered
|
||||||
|
@ -141,8 +147,12 @@ class SyslogLogger extends AbstractLogger
|
||||||
*/
|
*/
|
||||||
private function write($priority, $message)
|
private function write($priority, $message)
|
||||||
{
|
{
|
||||||
if (!openlog(self::IDENT, $this->logOpts, $this->logFacility)) {
|
set_error_handler([$this, 'customErrorHandler']);
|
||||||
throw new InternalServerErrorException('Can\'t open syslog for ident "' . $this->channel . '" and facility "' . $this->logFacility . '""');
|
$opened = openlog(self::IDENT, $this->logOpts, $this->logFacility);
|
||||||
|
restore_error_handler();
|
||||||
|
|
||||||
|
if (!$opened) {
|
||||||
|
throw new \UnexpectedValueException(sprintf('Can\'t open syslog for ident "%s" and facility "%s": ' . $this->errorMessage, $this->channel, $this->logFacility));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->syslogWrapper($priority, $message);
|
$this->syslogWrapper($priority, $message);
|
||||||
|
@ -172,6 +182,11 @@ class SyslogLogger extends AbstractLogger
|
||||||
return $logMessage;
|
return $logMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function customErrorHandler($code, $msg)
|
||||||
|
{
|
||||||
|
$this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A syslog wrapper to make syslog functionality testable
|
* A syslog wrapper to make syslog functionality testable
|
||||||
*
|
*
|
||||||
|
@ -180,6 +195,12 @@ class SyslogLogger extends AbstractLogger
|
||||||
*/
|
*/
|
||||||
protected function syslogWrapper($level, $entry)
|
protected function syslogWrapper($level, $entry)
|
||||||
{
|
{
|
||||||
syslog($level, $entry);
|
set_error_handler([$this, 'customErrorHandler']);
|
||||||
|
$written = syslog($level, $entry);
|
||||||
|
restore_error_handler();
|
||||||
|
|
||||||
|
if (!$written) {
|
||||||
|
throw new \UnexpectedValueException(sprintf('Can\'t write into syslog for ident "%s" and facility "%s": ' . $this->errorMessage, $this->channel, $this->logFacility));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,4 +59,15 @@ class SyslogLoggerTest extends AbstractLoggerTest
|
||||||
|
|
||||||
$logger->log('NOPE', 'a test');
|
$logger->log('NOPE', 'a test');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test when the logfacility is wrong (string)
|
||||||
|
* @expectedException \UnexpectedValueException
|
||||||
|
* @expectedExceptionMessageRegExp /Can\'t open syslog for ident ".*" and facility ".*": .* /
|
||||||
|
*/
|
||||||
|
public function testServerException()
|
||||||
|
{
|
||||||
|
$logger = new SyslogLoggerWrapper('test', $this->introspection, LogLevel::DEBUG, null, 'a string');
|
||||||
|
$logger->emergency('not working');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,9 @@ use Friendica\Util\Introspection;
|
||||||
use Friendica\Util\Logger\SyslogLogger;
|
use Friendica\Util\Logger\SyslogLogger;
|
||||||
use Psr\Log\LogLevel;
|
use Psr\Log\LogLevel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wraps the SyslogLogger for replacing the syslog call with a string field.
|
||||||
|
*/
|
||||||
class SyslogLoggerWrapper extends SyslogLogger
|
class SyslogLoggerWrapper extends SyslogLogger
|
||||||
{
|
{
|
||||||
private $content;
|
private $content;
|
||||||
|
|
Loading…
Reference in a new issue