Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomocy ze skryptem do zapisywania errorow we wlasnym logu
Forum PHP.pl > Forum > PHP
fate
Oto skrypt ktory udostepnil w necie jakis opensourcer, jedyne co w nim zmienilem to sciezke do pliku z logami errorow oraz chialem wylaczyc notice'y oraz warningi, zeby zapisywalo mi tylko ERRORY i uznalem ze wystarczyzedytowac to linijke:
  1. $user_errors = array(E_USER_ERROR, E_ERROR);


Jednak odswieżam stronę, zresetowalem webserv i dalej mi zapsiuje noticy )pod skryptem)

  1. //WYLACZYC NOTICE'y niby wylaczone
  2.  
  3.  
  4. /* we will do our own error handling. */
  5. error_reporting(0); // Turns off all error reporting.
  6.  
  7. /* user defined error handling function. */
  8. function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
  9. {
  10. // timestamp for the error entry.
  11. $dt = date('Y-m-d H:i:s (T)');
  12.  
  13. // define an assoc array of error string
  14. // in reality the only entries we should
  15. // consider are E_WARNING, E_NOTICE, E_USER_ERROR,
  16. // E_USER_WARNING and E_USER_NOTICE.
  17. $errortype = array (
  18. E_ERROR => 'Error',
  19. E_WARNING => 'Warning',
  20. E_PARSE => 'Parsing Error',
  21. E_NOTICE => 'Notice',
  22. E_CORE_ERROR => 'Core Error',
  23. E_CORE_WARNING => 'Core Warning',
  24. E_COMPILE_ERROR => 'Compile Error',
  25. E_COMPILE_WARNING => 'Compile Warning',
  26. E_USER_ERROR => 'User Error',
  27. E_USER_WARNING => 'User Warning',
  28. E_USER_NOTICE => 'User Notice',
  29. E_STRICT => 'Runtime Notice'
  30. );
  31. // set of errors for which a var trace will be saved.
  32. $user_errors = array(E_USER_ERROR, E_ERROR); // wyjebalem , E_USER_WARNING, E_USER_NOTICE dodalem E_ERROR
  33.  
  34. $err = "<errorentry>\n";
  35. $err .= "\t<datetime>" .$dt. "</datetime>\n";
  36. $err .= "\t<errornum>" .$errno. "</errornum>\n";
  37. $err .= "\t<errortype>" .$errortype[$errno]. "</errortype>\n";
  38. $err .= "\t<errormsg>" .$errmsg. "</errormsg>\n";
  39. $err .= "\t<scriptname>" .$filename. "</scriptname>\n";
  40. $err .= "\t<scriptlinenum>" .$linenum. "</scriptlinenum>\n";
  41.  
  42. if (in_array($errno, $user_errors)) {
  43. $err .= "\t<vartrace>" .wddx_serialize_value($vars, 'Variables'). "</vartrace>\n";
  44. }
  45. $err .= "</errorentry>\n\n";
  46.  
  47. // save to the error log file, and e-mail me if there is a critical user error.
  48. error_log($err, 3, 'data/errors.log');
  49. if ($errno == E_USER_ERROR) {
  50. mail('email@o2.pl', 'Critical User Error', $err);
  51. }
  52. }
  53. $old_error_handler = set_error_handler('userErrorHandler');



Co w pliku:
  1. 2013-06-15 11:46:58 (CEST) 8 Notice Undefined variable: _SESSION C:\WebServ\httpd\sciezka\m.php 214 2013-06-15 11:46:58 (CEST) 8 Notice Undefined index: hash C:\WebServ\httpd\sciezka\m.php 215 2013-06-15 11:46:58 (CEST) 8 Notice Use of undefined constant PHP_SELF - assumed 'PHP_SELF' C:\WebServ\httpd\sciezka\m.php 271 2013-06-15 11:46:58 (CEST) 8 Notice Undefined variable: error C:\WebServ\httpd\sciezka\m.php 316 2013-06-15 11:46:58 (CEST) 8 Notice Undefined variable: wyniki C:\WebServ\httpd\sciezka\m.php 317 2013-06-15 11:46:58 (CEST) 8 Notice Use of undefined constant ?appId? - assumed '?appId?' C:\WebServ\httpd\naoq76\index.php 74 2013-06-15 11:46:58 (CEST) 8 Notice Use of undefined constant ?secret? - assumed '?secret?' C:\WebServ\httpd\naoq76\index.php 75 2013-06-15 11:46:58 (CEST) 8 Notice Use of undefined constant ?fileUpload? - assumed '?fileUpload?' C:\WebServ\httpd\naoq76\index.php 76 2013-06-15 11:47:05 (CEST) 8 Notice Undefined variable: HTTP_SERVER_VARS C:\WebServ\httpd\sciezka\b.php 32 2013-06-15 11:47:05 (CEST) 8 Notice Undefined index: plik C:\WebServ\httpd\sciezka\admin\admin.php 87 2013-06-15 11:47:05 (CEST) 8 Notice Undefined index: plik C:\WebServ\httpd\sciezka\admin\admin.php 88 2013-06-15 11:47:05 (CEST) 8 Notice Undefined index: plik C:\WebServ\httpd\sciezka\admin\admin.php 89 2013-06-15 11:47:05 (CEST) 8 Notice Undefined offset: 0 C:\WebServ\httpd\sciezka\admin\admin.php 336 2013-06-15 11:47:05 (CEST) 8 Notice Undefined offset: 1 C:\WebServ\httpd\sciezka\admin\admin.php 336 2013-06-15 11:47:05 (CEST) 8 Notice Undefined offset: 2 C:\WebServ\httpd\sciezka\admin\admin.php 336 2013-06-15 11:47:05 (CEST) 8 Notice Undefined offset: 3 C:\WebServ\httpd\sciezka\admin\admin.php 336 2013-06-15 11:47:05 (CEST) 8 Notice Undefined offset: 4 C:\WebServ\httpd\sciezka\admin\admin.php 336 2013-06-15 11:47:05 (CEST) 8 Notice Undefined offset: 5 C:\WebServ\httpd\sciezka\admin\admin.php 336 2013-06-15 11:47:05 (CEST) 8 Notice Undefined offset: 6 C:\WebServ\httpd\sciezka\admin\admin.php


Plik byl oczywiscie czyszczony po przeprowadzonych operacjach.
Rozumiem rowniez ze moglbym przebudowac skrypty tak aby te notice'y sie nie pojawialy (sa to skrypty na ktorych zaczynalem nauke) ale spelniaja swoje funkcje bede staral sie nowe pisac dokladniej znajac te doswiadczenia a do tamtych kiedys wroce.

bede wdzieczny za pomoc, bo nie mam po prostu pomysłów o co ho
nospor
Przecież o to:
error_log($err, 3, 'data/errors.log');
wykonuje się niezależnie jaki masz typ błędu,więc nie kumam czemu się dziwisz, że wszystko się zapisuje ....
fate
aha nospor, nie znam za bardzo tych funkcji bo jak wspominalem nie pisalem tego skryptu, zmylil mnie po prostu komentarz autora.
Czy ma ktos pomysl jak w takim razie, wylaczyc zapisywanie notców i warningow ?
jak w praktyce działa funkcji serialize? bo nie moge zrozumieć do czego ma sluszywac owa linika w efekcie:
  1. $user_errors = array(E_USER_ERROR, E_ERROR);
nospor
Cytat
Czy ma ktos pomysl jak w takim razie, wylaczyc zapisywanie notców i warningow ?
Jakim cudem ty coś piszesz skoro Ty nie potrafisz zrobić zwykłego IFa?
Napisałem ci dokładnie, która linijka zapisuje Twoje logi. To daj na nią warunek (IF) i po sprawie....

Już żebyś nawet nie musiał myśleć, to warunek jaki masz dać masz dosłownie 3 linijki wyżej ....
fate
Ciężka krytyka ale dzięki nospor, czytanie powinno poprzedzać pisanie nawet wypocin wychodzi na to
Przyjrzałem się teraz dokładniej i mnie troche oświeciło, rzeczywiście nie ma tam nic tak naprawde skomplikowanego, nie wiem czemu założyłem, że ów warunek powinien sluzyc filtrowaniu bledów DO ZAPISU - pewnie dlatego, że ja bym tak zrobił
Poradze sobie.
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.