aboutsummaryrefslogtreecommitdiff
path: root/lib/Minz/Log.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-15 03:30:24 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-15 03:30:24 +0100
commit878e96202e8a22e4857b98e29b0a1fce68eccbc9 (patch)
treef9233c3b48a0cd6e0ac2536ddcc1897201595ad4 /lib/Minz/Log.php
parent4af233e1f736eb2256e5e1696418635165467855 (diff)
Grosse refactorisation pour permettre le chargement automatique des classes
C'est parti de changements pour https://github.com/marienfressinaud/FreshRSS/issues/255 et finalement j'ai continué la refactorisation... Ajout de préfixes FreshRSS_ et Minz_ sur le modèle de SimplePie_. Toutes les classes sont maintenant en chargement automatique (devrait améliorer les performances en évitant de charger plein de classes inutilisées, et faciliter la maintenance). Suppression de set_include_path(). Si souhaité, certaines classes de Minz pourraient être déplacées dans un sous-répertoire, par exemple les exceptions. Tests et relecture nécessaires.
Diffstat (limited to 'lib/Minz/Log.php')
-rw-r--r--lib/Minz/Log.php94
1 files changed, 94 insertions, 0 deletions
diff --git a/lib/Minz/Log.php b/lib/Minz/Log.php
new file mode 100644
index 000000000..a9b657271
--- /dev/null
+++ b/lib/Minz/Log.php
@@ -0,0 +1,94 @@
+<?php
+/**
+ * MINZ - Copyright 2011 Marien Fressinaud
+ * Sous licence AGPL3 <http://www.gnu.org/licenses/>
+*/
+
+/**
+ * La classe Log permet de logger des erreurs
+ */
+class Minz_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 erreurs mineures ou messages d'informations
+ * DEBUG Informations affichées pour le déboggage
+ */
+ const ERROR = 2;
+ const WARNING = 4;
+ const NOTICE = 8;
+ const DEBUG = 16;
+
+ /**
+ * 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 = Minz_Configuration::environment ();
+
+ if (! ($env === Minz_Configuration::SILENT
+ || ($env === Minz_Configuration::PRODUCTION
+ && ($level >= Minz_Log::NOTICE)))) {
+ if (is_null ($file_name)) {
+ $file_name = LOG_PATH . '/application.log';
+ }
+
+ switch ($level) {
+ case Minz_Log::ERROR :
+ $level_label = 'error';
+ break;
+ case Minz_Log::WARNING :
+ $level_label = 'warning';
+ break;
+ case Minz_Log::NOTICE :
+ $level_label = 'notice';
+ break;
+ case Minz_Log::DEBUG :
+ $level_label = 'debug';
+ break;
+ default :
+ $level_label = 'unknown';
+ }
+
+ if ($env == Minz_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 {
+ throw new Minz_PermissionDeniedException (
+ $file_name,
+ Minz_Exception::ERROR
+ );
+ }
+ }
+ }
+
+ /**
+ * 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, Minz_Log::DEBUG, $file_name);
+ self::record($msg_post, Minz_Log::DEBUG, $file_name);
+ }
+}