diff --git a/lib/config.php b/lib/config.php index d966016..e0112ee 100644 --- a/lib/config.php +++ b/lib/config.php @@ -55,8 +55,8 @@ class Config { return $password; } - public function getLogLevel(): string { - $loglevel = strtoupper($this->config['loglevel']) ?? "INFO"; + public function getLogLevel(): int { + $loglevel = strtoupper($this->config['loglevel']) ?? LOG_INFO; return $loglevel; } diff --git a/lib/logger.php b/lib/logger.php index f5bfc8a..dce81c3 100644 --- a/lib/logger.php +++ b/lib/logger.php @@ -18,22 +18,13 @@ class Logger { * angefragte Key im Array existiert. */ - private $levelnumbers = array( - LOG_ALERT => 10, - LOG_CRIT => 20, - LOG_ERR => 30, - LOG_WARNING => 40, - LOG_NOTICE => 50, - LOG_INFO => 60, - LOG_DEBUG => 70, - ); public $loglevel = LOG_INFO; private $app = "matrix-register"; private $logopen = false; public function __construct() { - if (openlog($this->app, LOG_NDELAY | LOG_PID, LOG_SYSLOG) === true) { + if (openlog($this->app, LOG_PID | LOG_PERROR , LOG_SYSLOG) === true) { $this->logopen = true; } } @@ -71,60 +62,49 @@ class Logger { $this->logMsg(LOG_DEBUG, $msg); } - private function addLevel(string $prio, string $msg): string { + public function setLogLevel(int $level) { /** - * Ich möchte die Priorität der Meldung mit im Log haben. Die - * Funktion setzt ein Flag vor die Meldung. + * Funktion zum Setzen des Loglevels. Mögliche Werte sind + * LOG_EMERG(0), LOG_ALERT(1), LOG_CRIT(2), LOG_ERR(3), + * LOG_WARNING(4), LOG_NOTICE(5), LOG_INFO(6) oder LOG_DEBUG(7). + * Es wird geprüft, ob das übergebene Level gültig ist. */ - $text = "[$prio] "."$msg"; - return $text; - } - - public function setLogLevel(string $level) { - - /** - * Funktion zum Setzen des Loglevels. Mögliche Werte sind LOG_EMERG, - * LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO - * oder LOG_DEBUG. Es wird geprüft, ob das übergebene Level gültig - * ist. - */ - - if (array_key_exists($level, $this->levelnumbers) === true) { + if (in_array($level, array(1, 2, 3, 4, 5, 6, 7, 8)) === true) { $this->loglevel = $level; - $this->d("Loglevel set to {$level}"); + $this->d("Loglevel set to {$this->loglevel}"); } else { echo "{$level} is not a valid loglevel."; } } - private function logMsg(string $level, string $msg) { + private function addLevel(int $level, string $msg): string { /** - * Entscheidet, ob eine Meldung ausgegeben wird oder nicht. Dazu + * Stellt der Meldung das Loglevel voran. + */ + + $text = "[$level] ".$msg; + return $text; + } + + private function logMsg(string $msglevel, string $msg) { + + /** + * Übergibt die Meldung an die Funktion syslog. Vorher wird + * entschieden, ob eine Meldung ausgegeben wird oder nicht. Dazu * wird geschaut, ob das Loglevel höher ist als das Messagelevel. */ - $msglevel = $this->levelnumbers[$level]; - $loglevel = $this->levelnumbers[$this->loglevel]; - if ($loglevel >= $msglevel) { - $msg = $this->addLevel($level, $msg); - $this->sendToLog($level, $msg); + $msg = $this->addLevel($msglevel, $msg); + if ($this->loglevel >= $msglevel) { + syslog($msglevel, $msg); + } else { + syslog($msglevel, $msg); } } - private function sendToLog(string $level, string $msg) { - - /** - * Schickt die Logmeldungen an das Syslog. Der erste Parameter ist - * das Loglevel. Der zweite - * Parameter ist die Logmeldung. - */ - - syslog($level, $msg); - } - }