diff options
| author | 2013-07-04 19:38:29 +0200 | |
|---|---|---|
| committer | 2013-07-04 19:38:29 +0200 | |
| commit | eb5f05304c253df90873b94ba52d7093115f3850 (patch) | |
| tree | 1152ab618aa5cf884a1f2f2e2d1926da4167a6be /lib/minz/Log.php | |
| parent | 8dd5fd51f74a47e5c80052f27a74cdcd5dd044b9 (diff) | |
| parent | b5f233f6d524ca9f74e9d33bf5692a1a678d7fec (diff) | |
Merge branch 'dev'0.4.0
Diffstat (limited to 'lib/minz/Log.php')
| -rwxr-xr-x | lib/minz/Log.php | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/lib/minz/Log.php b/lib/minz/Log.php new file mode 100755 index 000000000..30e4eb6a4 --- /dev/null +++ b/lib/minz/Log.php @@ -0,0 +1,92 @@ +<?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 . '`') + ) + ); + } + } + } + + /** + * Automatise le log des variables globales $_GET et $_POST + * Fait appel à la fonction record(...) + * Ne fonctionne qu'en environnement "development" + * @param $file_name fichier de log, par défaut LOG_PATH/application.log + */ + public static function recordRequest($file_name = null) { + $msg_get = str_replace("\n", '', '$_GET content : ' . print_r($_GET, true)); + $msg_post = str_replace("\n", '', '$_POST content : ' . print_r($_POST, true)); + + self::record($msg_get, Log::NOTICE, $file_name); + self::record($msg_post, Log::NOTICE, $file_name); + } +} |
