Log.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * MINZ - Copyright 2011 Marien Fressinaud
  4. * Sous licence AGPL3 <http://www.gnu.org/licenses/>
  5. */
  6. /**
  7. * La classe Log permet de logger des erreurs
  8. */
  9. class Minz_Log {
  10. /**
  11. * Les différents niveau de log
  12. * ERROR erreurs bloquantes de l'application
  13. * WARNING erreurs pouvant géner le bon fonctionnement, mais non bloquantes
  14. * NOTICE erreurs mineures ou messages d'informations
  15. * DEBUG Informations affichées pour le déboggage
  16. */
  17. const ERROR = 2;
  18. const WARNING = 4;
  19. const NOTICE = 8;
  20. const DEBUG = 16;
  21. /**
  22. * Enregistre un message dans un fichier de log spécifique
  23. * Message non loggué si
  24. * - environment = SILENT
  25. * - level = WARNING et environment = PRODUCTION
  26. * - level = NOTICE et environment = PRODUCTION
  27. * @param $information message d'erreur / information à enregistrer
  28. * @param $level niveau d'erreur
  29. * @param $file_name fichier de log, par défaut LOG_PATH/application.log
  30. */
  31. public static function record ($information, $level, $file_name = null) {
  32. $env = Minz_Configuration::environment ();
  33. if (! ($env === Minz_Configuration::SILENT
  34. || ($env === Minz_Configuration::PRODUCTION
  35. && ($level >= Minz_Log::NOTICE)))) {
  36. if (is_null ($file_name)) {
  37. $file_name = LOG_PATH . '/application.log';
  38. }
  39. switch ($level) {
  40. case Minz_Log::ERROR :
  41. $level_label = 'error';
  42. break;
  43. case Minz_Log::WARNING :
  44. $level_label = 'warning';
  45. break;
  46. case Minz_Log::NOTICE :
  47. $level_label = 'notice';
  48. break;
  49. case Minz_Log::DEBUG :
  50. $level_label = 'debug';
  51. break;
  52. default :
  53. $level_label = 'unknown';
  54. }
  55. if ($env == Minz_Configuration::PRODUCTION) {
  56. $file = @fopen ($file_name, 'a');
  57. } else {
  58. $file = fopen ($file_name, 'a');
  59. }
  60. if ($file !== false) {
  61. $log = '[' . date('r') . ']';
  62. $log .= ' [' . $level_label . ']';
  63. $log .= ' --- ' . $information . "\n";
  64. fwrite ($file, $log);
  65. fclose ($file);
  66. } else {
  67. throw new Minz_PermissionDeniedException (
  68. $file_name,
  69. Minz_Exception::ERROR
  70. );
  71. }
  72. }
  73. }
  74. /**
  75. * Automatise le log des variables globales $_GET et $_POST
  76. * Fait appel à la fonction record(...)
  77. * Ne fonctionne qu'en environnement "development"
  78. * @param $file_name fichier de log, par défaut LOG_PATH/application.log
  79. */
  80. public static function recordRequest($file_name = null) {
  81. $msg_get = str_replace("\n", '', '$_GET content : ' . print_r($_GET, true));
  82. $msg_post = str_replace("\n", '', '$_POST content : ' . print_r($_POST, true));
  83. self::record($msg_get, Minz_Log::DEBUG, $file_name);
  84. self::record($msg_post, Minz_Log::DEBUG, $file_name);
  85. }
  86. }