diff options
author | Frédéric Guillot <fred@kanboard.net> | 2018-03-05 12:04:28 -0800 |
---|---|---|
committer | Frédéric Guillot <fred@kanboard.net> | 2018-03-05 12:04:28 -0800 |
commit | 299198f7181fccf1e9a684649d173a1ebbdfbd1e (patch) | |
tree | c2539efcfae3b193603bbff22dde8b84fd7f9981 /app/Core/Log/Syslog.php | |
parent | a991758e98fc614d35ec67ec904c78fa0ff6feeb (diff) |
Move SimpleLogger lib into app source tree
Diffstat (limited to 'app/Core/Log/Syslog.php')
-rw-r--r-- | app/Core/Log/Syslog.php | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/app/Core/Log/Syslog.php b/app/Core/Log/Syslog.php new file mode 100644 index 00000000..3a354a88 --- /dev/null +++ b/app/Core/Log/Syslog.php @@ -0,0 +1,72 @@ +<?php + +namespace Kanboard\Core\Log; + +use RuntimeException; +use Psr\Log\LogLevel; + +/** + * Syslog Logger + * + * @package Kanboard\Core\Log + * @author Frédéric Guillot + */ +class Syslog extends Base +{ + /** + * Setup Syslog configuration + * + * @param string $ident Application name + * @param int $facility See http://php.net/manual/en/function.openlog.php + */ + public function __construct($ident = 'PHP', $facility = LOG_USER) + { + if (! openlog($ident, LOG_ODELAY | LOG_PID, $facility)) { + throw new RuntimeException('Unable to connect to syslog.'); + } + } + + /** + * Get syslog priority according to Psr\LogLevel + * + * @param mixed $level + * @return integer + */ + public function getSyslogPriority($level) + { + switch ($level) { + case LogLevel::EMERGENCY: + return LOG_EMERG; + case LogLevel::ALERT: + return LOG_ALERT; + case LogLevel::CRITICAL: + return LOG_CRIT; + case LogLevel::ERROR: + return LOG_ERR; + case LogLevel::WARNING: + return LOG_WARNING; + case LogLevel::NOTICE: + return LOG_NOTICE; + case LogLevel::INFO: + return LOG_INFO; + } + + return LOG_DEBUG; + } + + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * @return null + */ + public function log($level, $message, array $context = array()) + { + $syslogPriority = $this->getSyslogPriority($level); + $syslogMessage = $this->interpolate($message, $context); + + syslog($syslogPriority, $syslogMessage); + } +} |