Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Klasa] Obsluga logów
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
Rafiki
Napisałem coś takiego, może komuś się przyda.

  1. <?php
  2.  
  3. /**
  4.  * @author Rafał Robakowski <rafal.robakowski@gmail.com>
  5.  * @version 1.0
  6. */
  7.  
  8. /**
  9.  * Przetrzymuje scieżke do folderu gdzie będą zapisywane logi
  10. */
  11. define('logs_dir', $site['dir'] . 'temp/logs/');
  12.  
  13. /**
  14.  * Rozszerzenie klasy exception
  15. */
  16. class system_Exception extends Exception {
  17. }
  18.  
  19. /**
  20.  * Klasa służacą do obsługi logów
  21. */
  22. class logs {
  23.  
  24. /**
  25.  * Tworzy nowy plik z logiem lub dopisuje już do istniejącego pliku
  26.  * 
  27.  * @param text $description
  28. */
  29. public function generate_log($description) {
  30. $date = date('d-m-Y');
  31.  
  32. /*
  33.  * Jeśli istnieje juz plik z dzisiejszym logiem
  34. */
  35. if ( file_exists(logs_dir . $date . '.txt') ) {
  36. /*
  37.  * Jeśli zostanie pobrana zawartość z istniejącego już loga 
  38. */
  39. if ( $logs = unserialize(file_get_contents(logs_dir . $date . '.txt')) ) {
  40. $amount_registry = count($logs);
  41. $new_registry = $amount_registry;
  42.  
  43. $logs[$new_registry]['ip'] = $_SERVER['REMOTE_ADDR'];
  44. $logs[$new_registry]['date'] = $date;
  45. $logs[$new_registry]['time'] = date('G:i:s');
  46. $logs[$new_registry]['description'] = $description;
  47.  
  48. /*
  49.  * Jeśli zapisywanie do pliku jest możliwe 
  50. */
  51. if ( !is_writable(logs_dir . $date . '.txt') )
  52. throw new system_Exception('Nie można nadpisać treści do istniejącego pliku. Sprawdź nadane uprawnienia !');
  53.  
  54. file_put_contents(logs_dir . $date . '.txt', serialize($logs));
  55. return true;
  56. /*
  57.  * Jeśli odczytanie istniejącego już loga nie powiedzie się
  58. */
  59. } else
  60. throw new system_Exception('Nie można odczytać istniejącego pliku. Sprawdź nadane mu uprawnienia !');
  61. /*
  62.  * Jeśli plik z dzisiejszym logiem nie został jeszcze utworzony
  63. */
  64. } else {
  65. $logs[0]['ip'] = $_SERVER['REMOTE_ADDR'];
  66. $logs[0]['date'] = $date;
  67. $logs[0]['time'] = date('G:i:s');
  68. $logs[0]['description'] = $description;;
  69.  
  70. /*
  71.  * Jeśli zapis do pliku powiedzie się
  72. */
  73. if ( file_put_contents(logs_dir . $date . '.txt', serialize($logs)) )
  74. return true;
  75. else
  76. return false;
  77. }
  78. }
  79.  
  80. /**
  81.  * Wyswietla logi z danego dnia ( pliku )
  82.  * 
  83.  * @param string $date
  84. */
  85. public function view_log($date) {
  86. if ( $day_logs = unserialize(file_get_contents(logs_dir . $date . '.txt')) ) {
  87. foreach ( $day_logs as $key_logs => $value_logs ) {
  88. echo '[IP: ' . $value_logs['ip'] . ' - ' . $value_logs['date'] . ':' . $value_logs['time'] . '] [ ' . $value_logs['description'] . '] <BR><BR>';
  89. }
  90. }
  91. }
  92.  
  93. /**
  94.  * Usuwa wszystkie logi w folderze
  95. */
  96. public function remove_all_logs() {
  97. $handle = opendir(logs_dir);
  98.  
  99. while ( false !== ($filename = readdir($handle)) ) {
  100. if ( $filename <> '.' && $filename <> '..' )
  101.  unlink(logs_dir . $filename);
  102. }
  103. }
  104.  
  105. /**
  106.  * Usuwa logi z wybranego dnia
  107.  * 
  108.  * @param string $date
  109. */
  110. public function remove_one_log($date) {
  111. if ( !file_exists(logs_dir . $date . '.txt') )
  112. throw new system_Exception('Wybrany plik najprawdopodobniej nie istnieje !');
  113. if ( !unlink(logs_dir . $date . '.txt') )
  114. throw new system_Exception('Usunięcie wybranego pliku było niemożliwe. Sprawdź nadane uprawnienia !');
  115. }
  116. }
  117.  
  118. ?>


Co o tym sadzicie ? ;]
nasty
nie czytalem wszystkiego, ale zdazylem zobaczyc ze w log-u cos tam serializujesz, a nie lepjej zrobic log w formie czytelnej dla przecietnego zjadacza chleba ? winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.