Use syslog for logging

This commit is contained in:
Victor LABORIE 2018-07-25 18:59:09 +02:00
parent d65e584439
commit 862719006a
5 changed files with 23 additions and 37 deletions

View File

@ -11,6 +11,7 @@
[global] [global]
name = "Evoadmin Mail XXX"; name = "Evoadmin Mail XXX";
mail = "evoadmin-mail@example.com" mail = "evoadmin-mail@example.com"
log_level = debug
[ldap] [ldap]
host = "127.0.0.1" host = "127.0.0.1"
@ -19,7 +20,3 @@ base = "dc=example,dc=com"
admin_dn = "cn=admin,dc=example,dc=com" admin_dn = "cn=admin,dc=example,dc=com"
admin_pass = "xxxxxxx" admin_pass = "xxxxxxx"
superadmin[] = "evoadmin" superadmin[] = "evoadmin"
[log]
file = "../../log/evoadmin-mail.log"
level = debug

View File

@ -79,15 +79,15 @@ class LdapServer {
$sr=ldap_search($this->conn, self::getBaseDN($this), "(&(uid=".$this->login.")(isAdmin=TRUE))"); $sr=ldap_search($this->conn, self::getBaseDN($this), "(&(uid=".$this->login.")(isAdmin=TRUE))");
$info = ldap_get_entries($this->conn, $sr); $info = ldap_get_entries($this->conn, $sr);
if (!$info['count']) { if (!$info['count']) {
Logger::error('invalid login '.$this->login); Logger::error('Invalid login for '.$this->login);
throw new Exception("Échec de l'authentification, utilisateur ou mot de passe incorrect."); throw new Exception("Échec de l'authentification, utilisateur ou mot de passe incorrect.");
} }
if (!@ldap_bind($this->conn, $info[0]['dn'], $password)) { if (!@ldap_bind($this->conn, $info[0]['dn'], $password)) {
Logger::error('invalid password for user '.$this->login); Logger::error('Invalid password for '.$this->login);
throw new Exception("Échec de l'authentification, utilisateur ou mot de passe incorrect."); throw new Exception("Échec de l'authentification, utilisateur ou mot de passe incorrect.");
} }
Logger::info($this->login.' successfully logged in'); Logger::info('Accepted login for '.$this->login.'');
} }
public function getDomains() { public function getDomains() {
@ -113,10 +113,10 @@ class LdapServer {
if (!@ldap_add($this->conn, LdapDomain::getBaseDN($this, $name), $info)) { if (!@ldap_add($this->conn, LdapDomain::getBaseDN($this, $name), $info)) {
$error = ldap_error($this->conn); $error = ldap_error($this->conn);
Logger::error('error when adding domain '.$name, $this->login); Logger::error('Error when adding domain '.$name, $this->login);
throw new Exception("Erreur dans l'ajout du domaine : $error"); throw new Exception("Erreur dans l'ajout du domaine : $error");
} }
Logger::info('domain '.$name.' added', $this->login); Logger::info('Domain '.$name.' added', $this->login);
MailNotify::addDomain($name); MailNotify::addDomain($name);
} }
@ -134,12 +134,12 @@ class LdapServer {
$dn = LdapDomain::getBaseDN($this, $name); $dn = LdapDomain::getBaseDN($this, $name);
if (!ldap_delete($this->conn, $dn)) { if (!ldap_delete($this->conn, $dn)) {
$error = ldap_error($this->conn); $error = ldap_error($this->conn);
Logger::error('error when delete domain '.$name, $this->login); Logger::error('Error when delete domain '.$name, $this->login);
throw new Exception("Erreur dans la suppression du domaine $dn : $error"); throw new Exception("Erreur dans la suppression du domaine $dn : $error");
} }
Logger::info('domain '.$name.' deleted ', $this->login); Logger::info('Domain '.$name.' deleted ', $this->login);
} else { } else {
Logger::error('trying to delete an unknow domain '.$name, $this->login); Logger::error('Trying to delete an unknow domain '.$name, $this->login);
throw new Exception("Ce domaine n'existe pas !"); throw new Exception("Ce domaine n'existe pas !");
} }
} }

View File

@ -8,11 +8,10 @@ class Logger {
const ERROR = 3; const ERROR = 3;
const CRITICAL = 4; const CRITICAL = 4;
private static $file,$level; private static $level;
public static function configure(array $config) { public static function configure($loglevel) {
self::$file = $config['file']; switch ($loglevel) {
switch ($config['level']) {
case 'critical': case 'critical':
self::$level = self::CRITICAL; self::$level = self::CRITICAL;
case 'error': case 'error':
@ -29,40 +28,34 @@ class Logger {
} }
private static function write_log($txt, $level, $user, $var) { private static function write_log($txt, $level, $user, $var) {
$date = date("Y-m-d H:i:s"); $facility = empty($user) ? LOG_AUTH : LOG_LOCAL0;
if (empty($user)) { $id = empty($user) ? $_SERVER['REMOTE_ADDR'] : $user;
$log = '['.$date.'] '.self::LEVEL[$level].': '.$txt.' ['.$_SERVER['REMOTE_ADDR'].']'.PHP_EOL; openlog("evoadmin-mail", LOG_PID | LOG_PERROR, $facility);
} else { syslog($level, "$txt [$id]");
$log = '['.$date.'] '.self::LEVEL[$level].': '.$txt.' [by '.$user.']'.PHP_EOL; closelog();
}
file_put_contents(self::$file, $log, FILE_APPEND | LOCK_EX);
if (self::$level <= self::DEBUG && !empty($var)) {
file_put_contents(self::$file, var_dump($var).PHP_EOL , FILE_APPEND | LOCK_EX);
}
} }
public static function critical($txt, $user=NULL, $var=NULL) { public static function critical($txt, $user=NULL, $var=NULL) {
if (self::$level <= self::CRITICAL ) { if (self::$level <= self::CRITICAL ) {
self::write_log($txt, self::CRITICAL, $user, $var); self::write_log($txt, LOG_CRIT, $user, $var);
} }
} }
public static function error($txt, $user=NULL, $var=NULL) { public static function error($txt, $user=NULL, $var=NULL) {
if (self::$level <= self::ERROR ) { if (self::$level <= self::ERROR ) {
self::write_log($txt, self::ERROR, $user, $var); self::write_log($txt, LOG_ERR, $user, $var);
} }
} }
public static function warning($txt, $user=NULL, $var=NULL) { public static function warning($txt, $user=NULL, $var=NULL) {
if (self::$level <= self::WARNING) { if (self::$level <= self::WARNING) {
self::write_log($txt, self::WARNING, $user, $var); self::write_log($txt, LOG_WARNING, $user, $var);
} }
} }
public static function info($txt, $user=NULL, $var=NULL) { public static function info($txt, $user=NULL, $var=NULL) {
if (self::$level <= self::INFO) { if (self::$level <= self::INFO) {
self::write_log($txt, self::INFO, $user, $var); self::write_log($txt, LOG_INFO, $user, $var);
} }
} }
} }

View File

@ -13,5 +13,5 @@ require_once 'Twig/autoload.php';
$config = parse_ini_file('../config/config.ini', true); $config = parse_ini_file('../config/config.ini', true);
Logger::configure($config['log']); Logger::configure($config['global']['log_level']);
MailNotify::configure($config['global']); MailNotify::configure($config['global']);

View File

@ -19,6 +19,7 @@ require_once("/home/evoadmin-mail/www/htdocs/config/connect.php");
[global] [global]
name = "<?php echo $conf['html']['title']; ?>"; name = "<?php echo $conf['html']['title']; ?>";
mail = "<?php echo $conf['admin']['mail']; ?>" mail = "<?php echo $conf['admin']['mail']; ?>"
log_level = error
[ldap] [ldap]
host = "127.0.0.1" host = "127.0.0.1"
@ -31,8 +32,3 @@ foreach ($conf['admin']['logins'] as $admin) {
echo "superadmin[] = \"$admin\""; echo "superadmin[] = \"$admin\"";
} }
?> ?>
[log]
file = "../../log/evoadmin-mail.log"
level = error