From 2413627de9688c040ef79590fa056eee1fa2432d Mon Sep 17 00:00:00 2001 From: Philipp Date: Sun, 12 Dec 2021 22:45:22 +0100 Subject: [PATCH] Enhance syslog logging --- src/Core/Logger/Factory/Logger.php | 2 +- src/Core/Logger/Type/SyslogLogger.php | 7 ++++++- static/defaults.config.php | 8 ++++++++ static/env.config.php | 3 +++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/Core/Logger/Factory/Logger.php b/src/Core/Logger/Factory/Logger.php index 8f555483c..65034b6ed 100644 --- a/src/Core/Logger/Factory/Logger.php +++ b/src/Core/Logger/Factory/Logger.php @@ -119,7 +119,7 @@ class Logger case 'syslog': try { - $logger = new SyslogLogger($this->channel, $introspection, $loglevel); + $logger = new SyslogLogger($this->channel, $introspection, $loglevel, $config->get('system', 'syslog_flags', SyslogLogger::DEFAULT_FLAGS), $config->get('system', 'syslog_facility', SyslogLogger::DEFAULT_FACILITY)); } catch (LogLevelException $exception) { // If there's a wrong config value for loglevel, try again with standard $logger = $this->create($database, $config, $profiler, $fileSystem, LogLevel::NOTICE); diff --git a/src/Core/Logger/Type/SyslogLogger.php b/src/Core/Logger/Type/SyslogLogger.php index 54cb32795..ea960b0be 100644 --- a/src/Core/Logger/Type/SyslogLogger.php +++ b/src/Core/Logger/Type/SyslogLogger.php @@ -34,6 +34,11 @@ class SyslogLogger extends AbstractLogger { const IDENT = 'Friendica'; + /** @var int The default syslog flags */ + const DEFAULT_FLAGS = LOG_PID | LOG_ODELAY | LOG_CONS; + /** @var int The default syslog facility */ + const DEFAULT_FACILITY = LOG_USER; + /** * Translates LogLevel log levels to syslog log priorities. * @var array @@ -101,7 +106,7 @@ class SyslogLogger extends AbstractLogger * @throws LogLevelException * @throws LoggerException */ - public function __construct($channel, Introspection $introspection, string $level = LogLevel::NOTICE, int $logOpts = LOG_PID, int $logFacility = LOG_USER) + public function __construct($channel, Introspection $introspection, string $level = LogLevel::NOTICE, int $logOpts = self::DEFAULT_FLAGS, int $logFacility = self::DEFAULT_FLAGS) { parent::__construct($channel, $introspection); $this->logOpts = $logOpts; diff --git a/static/defaults.config.php b/static/defaults.config.php index f114b5a74..2df279bbd 100644 --- a/static/defaults.config.php +++ b/static/defaults.config.php @@ -325,6 +325,14 @@ return [ // Sets the logging adapter of Friendica globally (monolog, syslog, stream) 'logger_config' => 'stream', + // syslog flags (Integer) + // Sets the syslog flags in case 'logger_config' is set to 'syslog' + 'syslog_flags' => LOG_CONS | LOG_PID | LOG_ODELAY, + + // syslog flags (Integer) + // Sets the syslog facility in case 'logger_config' is set to 'syslog' + 'syslog_facility' => LOG_USER, + // maintenance_start (String) // Start of the window for the daily maintenance cron call. // The system timezone is used when no timezone is defined here. diff --git a/static/env.config.php b/static/env.config.php index 98c11afc2..c0590ff8c 100644 --- a/static/env.config.php +++ b/static/env.config.php @@ -45,6 +45,9 @@ return [ 'FRIENDICA_LOGFILE' => ['system', 'logfile'], 'FRIENDICA_LOGLEVEL'=> ['system', 'loglevel'], 'FRIENDICA_PROFILING' => ['system', 'profiler'], + 'FRIENDICA_LOGGER' => ['system', 'logger_config'], + 'FRIENDICA_SYSLOG_FLAGS' => ['system', 'syslog_flags'], + 'FRIENDICA_SYSLOG_FACILITY' => ['system', 'syslog_facility'], // Caching 'FRIENDICA_CACHE_DRIVER' => ['system', 'cache_driver'],