diff options
| author | 2012-10-21 18:47:57 +0200 | |
|---|---|---|
| committer | 2012-10-21 18:47:57 +0200 | |
| commit | fb57be5a5af3a2fb46b2dbf2b503ffe78eb5cf49 (patch) | |
| tree | 9440fc7846d8a56a7005b9ef029669c96ad959aa /lib/Log.php | |
First commit
Diffstat (limited to 'lib/Log.php')
| -rwxr-xr-x | lib/Log.php | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/lib/Log.php b/lib/Log.php new file mode 100755 index 000000000..7fb3f9dcf --- /dev/null +++ b/lib/Log.php @@ -0,0 +1,78 @@ +<?php +/** + * MINZ - Copyright 2011 Marien Fressinaud + * Sous licence AGPL3 <http://www.gnu.org/licenses/> +*/ + +/** + * La classe Log permet de logger des erreurs + */ +class Log { + /** + * Les différents niveau de log + * ERROR erreurs bloquantes de l'application + * WARNING erreurs pouvant géner le bon fonctionnement, mais non bloquantes + * NOTICE messages d'informations, affichés pour le déboggage + */ + const ERROR = 0; + const WARNING = 10; + const NOTICE = 20; + + /** + * Enregistre un message dans un fichier de log spécifique + * Message non loggué si + * - environment = SILENT + * - level = WARNING et environment = PRODUCTION + * - level = NOTICE et environment = PRODUCTION + * @param $information message d'erreur / information à enregistrer + * @param $level niveau d'erreur + * @param $file_name fichier de log, par défaut LOG_PATH/application.log + */ + public static function record ($information, $level, $file_name = null) { + $env = Configuration::environment (); + + if (! ($env == Configuration::SILENT + || ($env == Configuration::PRODUCTION + && ($level == Log::WARNING || $level == Log::NOTICE)))) { + if (is_null ($file_name)) { + $file_name = LOG_PATH . '/application.log'; + } + + switch ($level) { + case Log::ERROR : + $level_label = 'error'; + break; + case Log::WARNING : + $level_label = 'warning'; + break; + case Log::NOTICE : + $level_label = 'notice'; + break; + default : + $level_label = 'unknown'; + } + + if ($env == Configuration::PRODUCTION) { + $file = fopen ($file_name, 'a'); + } else { + $file = @fopen ($file_name, 'a'); + } + + if ($file !== false) { + $log = '[' . date('r') . ']'; + $log .= ' [' . $level_label . ']'; + $log .= ' ' . $information . "\n"; + fwrite ($file, $log); + fclose ($file); + } else { + Error::error ( + 500, + array ('error' => array ( + 'Permission is denied for `' + . $file_name . '`') + ) + ); + } + } + } +} |
