From 2312bb52f5e094f6c4bcf04e5c44d71a011e836d Mon Sep 17 00:00:00 2001 From: djmaze <> Date: Fri, 24 Dec 2021 15:01:36 +0100 Subject: [PATCH] Added new logger that is RFC 5424 compatible --- .../libraries/RainLoop/Config/Application.php | 12 +++- .../v/0.0.0/app/libraries/snappymail/log.php | 71 +++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 snappymail/v/0.0.0/app/libraries/snappymail/log.php diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php index f6c5b2821..34687bfd7 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php @@ -247,7 +247,17 @@ Values: 'enable' => array(false, 'Enable logging'), - 'write_on_error_only' => array(false, 'Logs entire request only if error occured (php requred)'), + 'level' => array(4, 'Log messages of set RFC 5424 section 6.2.1 Severity level and higher (0 = highest, 7 = lowest). +0 = Emergency +1 = Alert +2 = Critical +3 = Error +4 = Warning +5 = Notice +6 = Informational +7 = Debug'), + + 'write_on_error_only' => array(false, 'Logs entire request only if error occured (php required)'), 'write_on_php_error_only' => array(false, 'Logs entire request only if php error occured'), 'write_on_timeout_only' => array(0, 'Logs entire request only if request timeout (in seconds) occured.'), diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/log.php b/snappymail/v/0.0.0/app/libraries/snappymail/log.php new file mode 100644 index 000000000..aaaa0b822 --- /dev/null +++ b/snappymail/v/0.0.0/app/libraries/snappymail/log.php @@ -0,0 +1,71 @@ + 'EMERGENCY', + \LOG_ALERT => 'ALERT', + \LOG_CRIT => 'CRITICAL', + \LOG_ERR => 'ERROR', + \LOG_WARNING => 'WARNING', + \LOG_NOTICE => 'NOTICE', + \LOG_INFO => 'INFO', + \LOG_DEBUG => 'DEBUG', + ], + $mailso = [ + \LOG_EMERG => Type::ERROR, + \LOG_ALERT => Type::ERROR, + \LOG_CRIT => Type::ERROR, + \LOG_ERR => Type::ERROR, + \LOG_WARNING => Type::WARNING, + \LOG_NOTICE => Type::NOTICE, + \LOG_INFO => Type::INFO, + \LOG_DEBUG => Type::INFO + ]; + + protected static function log(int $level, string $prefix, string $msg) + { + // Default to level 4, 0 = LOG_EMERG, 7 = LOG_DEBUG + $log_level = \RainLoop\Api::Config()->Get('logs', 'level', \LOG_WARNING); + if ($level <= $log_level) { + \RainLoop\Api::Logger()->Write( + $msg, + static::$mailso[$level], + $prefix + ); +/* + \error_log($prefix . ' ' . static::$levels[$level] . ': ' . $msg); + + \RainLoop\Api::Config()->Get('logs', 'syslog'); + if (\openlog('snappymail', \LOG_ODELAY, \LOG_USER)) { + \syslog($level, "{$prefix} {$msg}"); + \closelog(); + } +*/ + } + } +}