cleanup sysloglogger

This commit is contained in:
Philipp Holzer 2019-02-28 09:48:55 +01:00 committed by Hypolite Petovan
parent 25b6db6aca
commit 22f1983cc0
5 changed files with 56 additions and 44 deletions

View File

@ -215,7 +215,7 @@ return [
'local_tags' => false, 'local_tags' => false,
// logger_adapter (String) // logger_adapter (String)
// Sets the logging adapter of Friendica globally (monolog, syslog) // Sets the logging adapter of Friendica globally (monolog, syslog, stream)
'logger_adapter' => 'monolog', 'logger_adapter' => 'monolog',
// max_batch_queue (Integer) // max_batch_queue (Integer)

View File

@ -8,6 +8,7 @@ use Friendica\Network\HTTPException\InternalServerErrorException;
use Friendica\Util\Introspection; use Friendica\Util\Introspection;
use Friendica\Util\Logger\Monolog\FriendicaDevelopHandler; use Friendica\Util\Logger\Monolog\FriendicaDevelopHandler;
use Friendica\Util\Logger\Monolog\FriendicaIntrospectionProcessor; use Friendica\Util\Logger\Monolog\FriendicaIntrospectionProcessor;
use Friendica\Util\Logger\StreamLogger;
use Friendica\Util\Logger\SyslogLogger; use Friendica\Util\Logger\SyslogLogger;
use Friendica\Util\Logger\VoidLogger; use Friendica\Util\Logger\VoidLogger;
use Friendica\Util\Logger\WorkerLogger; use Friendica\Util\Logger\WorkerLogger;
@ -54,13 +55,18 @@ class LoggerFactory
} }
$introspection = new Introspection(self::$ignoreClassList); $introspection = new Introspection(self::$ignoreClassList);
switch ($config->get('system', 'logger_adapter', 'monolog')) {
case 'syslog':
$level = $config->get('system', 'loglevel'); $level = $config->get('system', 'loglevel');
switch ($config->get('system', 'logger_adapter', 'monolog')) {
case 'syslog':
$logger = new SyslogLogger($channel, $introspection, $profiler, $level); $logger = new SyslogLogger($channel, $introspection, $profiler, $level);
break; break;
case 'stream':
$logger = new StreamLogger($channel, $introspection, $profiler, $level);
break;
case 'monolog': case 'monolog':
default: default:
$loggerTimeZone = new \DateTimeZone('UTC'); $loggerTimeZone = new \DateTimeZone('UTC');
@ -73,7 +79,6 @@ class LoggerFactory
$logger->pushProcessor(new FriendicaIntrospectionProcessor($introspection, LogLevel::DEBUG)); $logger->pushProcessor(new FriendicaIntrospectionProcessor($introspection, LogLevel::DEBUG));
$stream = $config->get('system', 'logfile'); $stream = $config->get('system', 'logfile');
$level = $config->get('system', 'loglevel');
$loglevel = self::mapLegacyConfigDebugLevel((string)$level); $loglevel = self::mapLegacyConfigDebugLevel((string)$level);
static::addStreamHandler($logger, $stream, $loglevel); static::addStreamHandler($logger, $stream, $loglevel);

View File

@ -99,7 +99,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface
public function emergency($message, array $context = array()) public function emergency($message, array $context = array())
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
$this->addEntry(LogLevel::EMERGENCY, $message, $context); $this->addEntry(LogLevel::EMERGENCY, (string) $message, $context);
$this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack());
} }
@ -109,7 +109,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface
public function alert($message, array $context = array()) public function alert($message, array $context = array())
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
$this->addEntry(LogLevel::ALERT, $message, $context); $this->addEntry(LogLevel::ALERT, (string) $message, $context);
$this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack());
} }
@ -119,7 +119,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface
public function critical($message, array $context = array()) public function critical($message, array $context = array())
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
$this->addEntry(LogLevel::CRITICAL, $message, $context); $this->addEntry(LogLevel::CRITICAL, (string) $message, $context);
$this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack());
} }
@ -129,7 +129,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface
public function error($message, array $context = array()) public function error($message, array $context = array())
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
$this->addEntry(LogLevel::ERROR, $message, $context); $this->addEntry(LogLevel::ERROR, (string) $message, $context);
$this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack());
} }
@ -139,7 +139,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface
public function warning($message, array $context = array()) public function warning($message, array $context = array())
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
$this->addEntry(LogLevel::WARNING, $message, $context); $this->addEntry(LogLevel::WARNING, (string) $message, $context);
$this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack());
} }
@ -149,7 +149,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface
public function notice($message, array $context = array()) public function notice($message, array $context = array())
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
$this->addEntry(LogLevel::NOTICE, $message, $context); $this->addEntry(LogLevel::NOTICE, (string) $message, $context);
$this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack());
} }
@ -159,7 +159,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface
public function info($message, array $context = array()) public function info($message, array $context = array())
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
$this->addEntry(LogLevel::INFO, $message, $context); $this->addEntry(LogLevel::INFO, (string) $message, $context);
$this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack());
} }
@ -169,7 +169,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface
public function debug($message, array $context = array()) public function debug($message, array $context = array())
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
$this->addEntry(LogLevel::DEBUG, $message, $context); $this->addEntry(LogLevel::DEBUG, (string) $message, $context);
$this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack());
} }
@ -179,7 +179,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface
public function log($level, $message, array $context = array()) public function log($level, $message, array $context = array())
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
$this->addEntry($level, $message, $context); $this->addEntry($level, (string) $message, $context);
$this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack());
} }
} }

View File

@ -6,13 +6,20 @@ use Friendica\Util\Introspection;
use Friendica\Util\Profiler; use Friendica\Util\Profiler;
/** /**
* A Logger instance for logging into a stream * A Logger instance for logging into a stream (file, stdout, stderr)
*/ */
class StreamLogger extends AbstractFriendicaLogger class StreamLogger extends AbstractFriendicaLogger
{ {
public function __construct($channel, Introspection $introspection, Profiler $profiler) /**
* The minimum loglevel at which this logger will be triggered
* @var string
*/
private $logLevel;
public function __construct($channel, Introspection $introspection, Profiler $profiler, $level)
{ {
parent::__construct($channel, $introspection, $profiler); parent::__construct($channel, $introspection, $profiler);
$this->logLevel = $level;
} }
/** /**

View File

@ -85,6 +85,27 @@ class SyslogLogger extends AbstractFriendicaLogger
$this->introspection->addClasses(array(self::class)); $this->introspection->addClasses(array(self::class));
} }
/**
* Adds a new entry to the syslog
*
* @param int $level
* @param string $message
* @param array $context
*
* @throws InternalServerErrorException if the syslog isn't available
*/
protected function addEntry($level, $message, $context = [])
{
$logLevel = $this->mapLevelToPriority($level);
if ($logLevel >= $this->logLevel) {
return;
}
$formattedLog = $this->formatLog($logLevel, $message, $context);
$this->write($logLevel, $formattedLog);
}
/** /**
* Maps the LogLevel (@see LogLevel ) to a SysLog priority (@see http://php.net/manual/en/function.syslog.php#refsect1-function.syslog-parameters ) * Maps the LogLevel (@see LogLevel ) to a SysLog priority (@see http://php.net/manual/en/function.syslog.php#refsect1-function.syslog-parameters )
* *
@ -103,6 +124,14 @@ class SyslogLogger extends AbstractFriendicaLogger
return $this->logLevels[$level]; return $this->logLevels[$level];
} }
/**
* Closes the Syslog
*/
public function close()
{
closelog();
}
/** /**
* Writes a message to the syslog * Writes a message to the syslog
* @see http://php.net/manual/en/function.syslog.php#refsect1-function.syslog-parameters * @see http://php.net/manual/en/function.syslog.php#refsect1-function.syslog-parameters
@ -121,14 +150,6 @@ class SyslogLogger extends AbstractFriendicaLogger
syslog($priority, $message); syslog($priority, $message);
} }
/**
* Closes the Syslog
*/
public function close()
{
closelog();
}
/** /**
* Formats a log record for the syslog output * Formats a log record for the syslog output
* *
@ -152,25 +173,4 @@ class SyslogLogger extends AbstractFriendicaLogger
return $logMessage; return $logMessage;
} }
/**
* Adds a new entry to the syslog
*
* @param int $level
* @param string $message
* @param array $context
*
* @throws InternalServerErrorException if the syslog isn't available
*/
protected function addEntry($level, $message, $context = [])
{
$logLevel = $this->mapLevelToPriority($level);
if ($logLevel >= $this->logLevel) {
return;
}
$formattedLog = $this->formatLog($level, $message, $context);
$this->write($level, $formattedLog);
}
} }