/** * Retourne le chemin vers un fichier de log déterminé à partir des paramètres $type, $name et $archive. * (ex: /Applications/MAMP/www/monsite/logs/erreurs/201202/201202_erreur_connexion.log) * Elle crée le chemin s'il n'existe pas. * * @param string $type Dossier dans lequel sera enregistré le fichier de log * @param string $name Nom du fichier de log * @param string $archive Archivage : LOG_VOID, LOG_MONTH ou LOG_YEAR * @return string Chemin vers le fichier de log **/ private function path($type, $name, $archive = self::LOG_YEAR) { # On vérifie que le logger est prêt (et donc que le dossier de dépôt existe) if (!$this->ready) { trigger_error("Logger is not ready", E_USER_WARNING); return false; } # Contrôle des arguments if (!isset($type) || empty($name)) { trigger_error("Paramètres incorrects", E_USER_WARNING); return false; } $makefile = new filesystem_makefile(); # Création dossier du type (ex: /Applications/MAMP/www/monsite/logs/erreurs/) if (empty($type)) { $type_path = $this->pathlog . '/'; } else { $type_path = $this->pathlog . '/' . $type . '/'; if (!is_dir($type_path)) { $makefile->mkdir(array($type_path)); } } $date = new date_dateformat(); # Création du dossier archive (ex: /Applications/MAMP/www/monsite/logs/erreurs/201202/) if ($archive == self::LOG_VOID) { $logfile = $type_path . $name . '.log'; } elseif ($archive == self::LOG_MONTH) { $current_year = $date->dateDefine('Y'); $current_month = $date->dateDefine('m'); $type_path_month = $type_path . $current_year; if (!is_dir($type_path_month)) { $makefile->mkdir(array($type_path_month)); } $logfile = $type_path_month . '/' . $current_year . $current_month . '_' . $name . '.log'; } elseif ($archive == self::LOG_YEAR) { $current_year = $date->dateDefine('Y'); $type_path_year = $type_path . $current_year; if (!is_dir($type_path_year)) { $makefile->mkdir(array($type_path_year)); } $logfile = $type_path_year . '/' . $current_year . '_' . $name . '.log'; } else { trigger_error("LOG Error '{$archive}'", E_USER_WARNING); return false; } return $logfile; }