Log.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 messages d'informations, affichés pour le déboggage
  15. */
  16. const ERROR = 0;
  17. const WARNING = 10;
  18. const NOTICE = 20;
  19. /**
  20. * Enregistre un message dans un fichier de log spécifique
  21. * Message non loggué si
  22. * - environment = SILENT
  23. * - level = WARNING et environment = PRODUCTION
  24. * - level = NOTICE et environment = PRODUCTION
  25. * @param $information message d'erreur / information à enregistrer
  26. * @param $level niveau d'erreur
  27. * @param $file_name fichier de log, par défaut LOG_PATH/application.log
  28. */
  29. public static function record ($information, $level, $file_name = null) {
  30. $env = Configuration::environment ();
  31. if (! ($env == Configuration::SILENT
  32. || ($env == Configuration::PRODUCTION
  33. && ($level == Minz_Log::WARNING || $level == Minz_Log::NOTICE)))) {
  34. if (is_null ($file_name)) {
  35. $file_name = LOG_PATH . '/application.log';
  36. }
  37. switch ($level) {
  38. case Minz_Log::ERROR :
  39. $level_label = 'error';
  40. break;
  41. case Minz_Log::WARNING :
  42. $level_label = 'warning';
  43. break;
  44. case Minz_Log::NOTICE :
  45. $level_label = 'notice';
  46. break;
  47. default :
  48. $level_label = 'unknown';
  49. }
  50. if ($env == Configuration::PRODUCTION) {
  51. $file = @fopen ($file_name, 'a');
  52. } else {
  53. $file = fopen ($file_name, 'a');
  54. }
  55. if ($file !== false) {
  56. $log = '[' . date('r') . ']';
  57. $log .= ' [' . $level_label . ']';
  58. $log .= ' --- ' . $information . "\n";
  59. fwrite ($file, $log);
  60. fclose ($file);
  61. } else {
  62. Error::error (
  63. 500,
  64. array ('error' => array (
  65. 'Permission is denied for `'
  66. . $file_name . '`')
  67. )
  68. );
  69. }
  70. }
  71. }
  72. /**
  73. * Automatise le log des variables globales $_GET et $_POST
  74. * Fait appel à la fonction record(...)
  75. * Ne fonctionne qu'en environnement "development"
  76. * @param $file_name fichier de log, par défaut LOG_PATH/application.log
  77. */
  78. public static function recordRequest($file_name = null) {
  79. $msg_get = str_replace("\n", '', '$_GET content : ' . print_r($_GET, true));
  80. $msg_post = str_replace("\n", '', '$_POST content : ' . print_r($_POST, true));
  81. self::record($msg_get, Minz_Log::NOTICE, $file_name);
  82. self::record($msg_post, Minz_Log::NOTICE, $file_name);
  83. }
  84. }