From 22f1983cc0c834f88f6a519e81c456a8a34d14cc Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Thu, 28 Feb 2019 09:48:55 +0100 Subject: [PATCH] cleanup sysloglogger --- config/defaults.config.php | 2 +- src/Factory/LoggerFactory.php | 11 ++-- src/Util/Logger/AbstractFriendicaLogger.php | 18 +++---- src/Util/Logger/StreamLogger.php | 11 +++- src/Util/Logger/SyslogLogger.php | 58 ++++++++++----------- 5 files changed, 56 insertions(+), 44 deletions(-) diff --git a/config/defaults.config.php b/config/defaults.config.php index ae5bd361f4..5ec4b62572 100644 --- a/config/defaults.config.php +++ b/config/defaults.config.php @@ -215,7 +215,7 @@ return [ 'local_tags' => false, // 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', // max_batch_queue (Integer) diff --git a/src/Factory/LoggerFactory.php b/src/Factory/LoggerFactory.php index ebcb3bd2b0..58efd461fe 100644 --- a/src/Factory/LoggerFactory.php +++ b/src/Factory/LoggerFactory.php @@ -8,6 +8,7 @@ use Friendica\Network\HTTPException\InternalServerErrorException; use Friendica\Util\Introspection; use Friendica\Util\Logger\Monolog\FriendicaDevelopHandler; use Friendica\Util\Logger\Monolog\FriendicaIntrospectionProcessor; +use Friendica\Util\Logger\StreamLogger; use Friendica\Util\Logger\SyslogLogger; use Friendica\Util\Logger\VoidLogger; use Friendica\Util\Logger\WorkerLogger; @@ -54,13 +55,18 @@ class LoggerFactory } $introspection = new Introspection(self::$ignoreClassList); + $level = $config->get('system', 'loglevel'); switch ($config->get('system', 'logger_adapter', 'monolog')) { - case 'syslog': - $level = $config->get('system', 'loglevel'); + case 'syslog': $logger = new SyslogLogger($channel, $introspection, $profiler, $level); break; + + case 'stream': + $logger = new StreamLogger($channel, $introspection, $profiler, $level); + break; + case 'monolog': default: $loggerTimeZone = new \DateTimeZone('UTC'); @@ -73,7 +79,6 @@ class LoggerFactory $logger->pushProcessor(new FriendicaIntrospectionProcessor($introspection, LogLevel::DEBUG)); $stream = $config->get('system', 'logfile'); - $level = $config->get('system', 'loglevel'); $loglevel = self::mapLegacyConfigDebugLevel((string)$level); static::addStreamHandler($logger, $stream, $loglevel); diff --git a/src/Util/Logger/AbstractFriendicaLogger.php b/src/Util/Logger/AbstractFriendicaLogger.php index 3f851f42de..326ee05004 100644 --- a/src/Util/Logger/AbstractFriendicaLogger.php +++ b/src/Util/Logger/AbstractFriendicaLogger.php @@ -99,7 +99,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface public function emergency($message, array $context = array()) { $stamp1 = microtime(true); - $this->addEntry(LogLevel::EMERGENCY, $message, $context); + $this->addEntry(LogLevel::EMERGENCY, (string) $message, $context); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); } @@ -109,7 +109,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface public function alert($message, array $context = array()) { $stamp1 = microtime(true); - $this->addEntry(LogLevel::ALERT, $message, $context); + $this->addEntry(LogLevel::ALERT, (string) $message, $context); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); } @@ -119,7 +119,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface public function critical($message, array $context = array()) { $stamp1 = microtime(true); - $this->addEntry(LogLevel::CRITICAL, $message, $context); + $this->addEntry(LogLevel::CRITICAL, (string) $message, $context); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); } @@ -129,7 +129,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface public function error($message, array $context = array()) { $stamp1 = microtime(true); - $this->addEntry(LogLevel::ERROR, $message, $context); + $this->addEntry(LogLevel::ERROR, (string) $message, $context); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); } @@ -139,7 +139,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface public function warning($message, array $context = array()) { $stamp1 = microtime(true); - $this->addEntry(LogLevel::WARNING, $message, $context); + $this->addEntry(LogLevel::WARNING, (string) $message, $context); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); } @@ -149,7 +149,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface public function notice($message, array $context = array()) { $stamp1 = microtime(true); - $this->addEntry(LogLevel::NOTICE, $message, $context); + $this->addEntry(LogLevel::NOTICE, (string) $message, $context); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); } @@ -159,7 +159,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface public function info($message, array $context = array()) { $stamp1 = microtime(true); - $this->addEntry(LogLevel::INFO, $message, $context); + $this->addEntry(LogLevel::INFO, (string) $message, $context); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); } @@ -169,7 +169,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface public function debug($message, array $context = array()) { $stamp1 = microtime(true); - $this->addEntry(LogLevel::DEBUG, $message, $context); + $this->addEntry(LogLevel::DEBUG, (string) $message, $context); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); } @@ -179,7 +179,7 @@ abstract class AbstractFriendicaLogger implements LoggerInterface public function log($level, $message, array $context = array()) { $stamp1 = microtime(true); - $this->addEntry($level, $message, $context); + $this->addEntry($level, (string) $message, $context); $this->profiler->saveTimestamp($stamp1, 'file', System::callstack()); } } diff --git a/src/Util/Logger/StreamLogger.php b/src/Util/Logger/StreamLogger.php index 4ccbc8283b..8d9ffec387 100644 --- a/src/Util/Logger/StreamLogger.php +++ b/src/Util/Logger/StreamLogger.php @@ -6,13 +6,20 @@ use Friendica\Util\Introspection; 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 { - 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); + $this->logLevel = $level; } /** diff --git a/src/Util/Logger/SyslogLogger.php b/src/Util/Logger/SyslogLogger.php index 25d8f2f5e2..cff7125e5b 100644 --- a/src/Util/Logger/SyslogLogger.php +++ b/src/Util/Logger/SyslogLogger.php @@ -85,6 +85,27 @@ class SyslogLogger extends AbstractFriendicaLogger $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 ) * @@ -103,6 +124,14 @@ class SyslogLogger extends AbstractFriendicaLogger return $this->logLevels[$level]; } + /** + * Closes the Syslog + */ + public function close() + { + closelog(); + } + /** * Writes a message to the syslog * @see http://php.net/manual/en/function.syslog.php#refsect1-function.syslog-parameters @@ -121,14 +150,6 @@ class SyslogLogger extends AbstractFriendicaLogger syslog($priority, $message); } - /** - * Closes the Syslog - */ - public function close() - { - closelog(); - } - /** * Formats a log record for the syslog output * @@ -152,25 +173,4 @@ class SyslogLogger extends AbstractFriendicaLogger 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); - } }