diff --git a/plugins/kolab_2fa/lib/Kolab2FA/Log/Logger.php b/plugins/kolab_2fa/lib/Kolab2FA/Log/Logger.php index 2d3e4161..7fccd5bc 100644 --- a/plugins/kolab_2fa/lib/Kolab2FA/Log/Logger.php +++ b/plugins/kolab_2fa/lib/Kolab2FA/Log/Logger.php @@ -1,8 +1,42 @@ + * + * Copyright (C) 2015, Kolab Systems AG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + namespace Kolab2FA\Log; -interface Logger { +interface Logger +{ + /** + * Setter for the log name + */ + public function set_name($name); + + /** + * Setter for the minimum log level + */ + public function set_level($level); + + /** + * Do log the given message at the given level + */ public function log($level, $message); } - -?> diff --git a/plugins/kolab_2fa/lib/Kolab2FA/Log/RcubeLogger.php b/plugins/kolab_2fa/lib/Kolab2FA/Log/RcubeLogger.php index ca00826b..1befb473 100644 --- a/plugins/kolab_2fa/lib/Kolab2FA/Log/RcubeLogger.php +++ b/plugins/kolab_2fa/lib/Kolab2FA/Log/RcubeLogger.php @@ -1,9 +1,80 @@ + * + * Copyright (C) 2015, Kolab Systems AG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + namespace Kolab2FA\Log; -class RcubeLogger implements Logger { - public function log($level, $message) { - error_log($message); +use \rcube; + +class RcubeLogger implements Logger +{ + protected $name = null; + protected $level = LOG_DEBUG; + + public function __construct($name = null) + { + if ($name !== null) { + $this->set_name($name); + } + } + + public function set_name($name) + { + $this->name = $name; + } + + public function set_level($name) + { + $this->level = $level; + } + + public function log($level, $message) + { + if (!is_string($message)) { + $message = var_export($message, true); + } + + switch ($level) { + case LOG_DEBUG: + case LOG_INFO: + case LOG_NOTICE: + if ($level >= $this->level) { + rcube::write_log($this->name ?: 'console', $message); + } + break; + + case LOG_EMERGE: + case LOG_ALERT: + case LOG_CRIT: + case LOG_ERR: + case LOG_WARNING: + rcube::raise_error(array( + 'code' => 600, + 'type' => 'php', + 'message' => $message, + ), true, false); + break; + } } } -?> + diff --git a/plugins/kolab_2fa/lib/Kolab2FA/Log/Syslog.php b/plugins/kolab_2fa/lib/Kolab2FA/Log/Syslog.php index dc080977..cf174dca 100644 --- a/plugins/kolab_2fa/lib/Kolab2FA/Log/Syslog.php +++ b/plugins/kolab_2fa/lib/Kolab2FA/Log/Syslog.php @@ -1,9 +1,54 @@ + * + * Copyright (C) 2015, Kolab Systems AG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + namespace Kolab2FA\Log; -class Syslog implements Logger { - public function log($level, $message) { - error_log($message); +use \rcube; + +class Syslog implements Logger +{ + protected $name = 'Kolab2FA'; + protected $level = LOG_INFO; + + public function set_name($name) + { + $this->name = $name; + } + + public function set_level($name) + { + $this->level = $level; + } + + public function log($level, $message) + { + if ($level >= $this->level) { + if (!is_string($message)) { + $message = var_export($message, true); + } + + syslog($level, '[' . $this->name . '] ' . $message); + } } -} -?> +} \ No newline at end of file