![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 17.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Postanowiłem ostatnio napisać własny error handler, który wraz z wyjątkami (PHP5) zajmował by się odpowiednio napotkanymi w trakcie użytkowania skryptu błędami. Te byłyby rekordowane do bazy lub pliku. Postanowiłem nieco rozszerzyć swój mały projekt i rekordować wszystkie ważne zdarzenia i poczynania użytkowników (nie tylko te błędne) tworząc pliki logów. Tworząc tak szczegółowe logi, bardzo chciałbym aby w znalazły się w nich wszystkie błędy zwracane przez program w tym E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING i E_STRICT... resztę typów errorów z łatwością mogę dopisywać do logów za pomocą set_error_handler() i trigger_error(). Więc moje pytanie... Czy istnieje jakiś sposób aby "przechwytywać" informacje o w/w typach błędów? Chciałbym mieć zalogowane że o TEJ godzinie TEGO dnia, w TYM pliku, użytkownik napotkał E_PARSE o treści TAKIEJ ![]() -------------------- Pozdrawiam,
Foxer |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
za bardzo nie kumam Twego problemu... o co ci chodzi? Napisales ze wiesz o set_error_handler(), czyli masz wszystko co ci potrzeba. w czym problem?
Cytat Chciałbym mieć zalogowane że o TEJ godzinie TEGO dnia, w TYM pliku, użytkownik napotkał E_PARSE o treści TAKIEJ Wszystko to masz gdy przechwycisz blad. Date i godzine to se sam pobierz chocby przy pomocy date()
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 17.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie, chodzi o to że zgodnie z manualem, funkcji set_error_handler" title="Zobacz w manualu php" target="_manual nie mogę używać do łapania błędów E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING i E_STRICT. Handler ustawiony przez tą funkcję wyłapie jedynie błędy typu: E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE.
... a ja chciałbym przechwytywać wszystkie ![]() -------------------- Pozdrawiam,
Foxer |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jak robisz:
case E_CORE_WARNING to nie działa? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
aaa, oto biega. No a jak ty to sobie wyobrazasz? PARSE_ERROR leci wowczas, gdy masz blad w skladni php, czyli ze skrypt jest totalnie źle napisany i nie da sie skompilowac. jak wiec ty chcesz wylapac cos przy pomocy funkcji, ktora jest wlasnie napisana w skrypcie, ktorego nie da sie skompilowac
![]() ![]() NIektorych bledow nie przechwycisz i basta. ale takie byki wystapuje niemalze nigdy przy dzialajacej juz aplikacji. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co mi wiadomo to Xaraya wychwytuje błędy składni plików php. Ale może robi to tak, że najpierw pobiera składnię includowanego pliku jakąś funkcją, evaluje go w buforze i jeżeli napotka błąd to wyświetla, nie wiem.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 17.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Mhm, rzeczywiście, rozumiem. Ale jednak (pomęczę jeszcze)... przykładowo E_WARNING wyświetlany np. przy błędnym wykorzystaniu dowolnej funkcji lub nie podaniu odpowiednich jej parametrów. Czy taki error - błędne użycie funkcji - również jest jednoznaczne z brakiem możliwości poprawnej kompilacji?
Chodzi mi o sytuację w której serwer poprawnie przekompilował mój handler a następnie natknął się na E_WARNING. Error teoretycznie mógłby zostać już obsłużony przez mój handler, który zlogowałby błąd, bądź "zorientowałby się" w sytuacji ![]() Jeżeli plotę głupoty - przepraszam ![]() -------------------- Pozdrawiam,
Foxer |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Mhm, rzeczywiście, rozumiem. Ale jednak (pomęczę jeszcze)... przykładowo E_WARNING wyświetlany np. przy błędnym wykorzystaniu dowolnej funkcji lub nie podaniu odpowiednich jej parametrów. Czy taki error - błędne użycie funkcji - również jest jednoznaczne z brakiem możliwości poprawnej kompilacji? Nie, czemu? skrypt sie skompilowal, a ze nie wszystko zostalo wykonane z odpowiednią ilsoci parametrow no to trudno, leci E_WARNING i ty go wlasnym handlerem mozesz przechwycic. nie widze problemu. sam zreszta tak robie
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 17.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Aha, myślałem że set_error_handler załatwi sprawę tylko z E_USER_WARNING, gdyż tak wynikało z manuala. Jednak jeżeli zajmie się też E_WARNING to częściowo rozwiąże moją zagwozdkę. Dzięki!
![]() -------------------- Pozdrawiam,
Foxer |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Aha, myślałem że set_error_handler załatwi sprawę tylko z E_USER_WARNING, gdyż tak wynikało z manuala. A w ktorym miejscu tak wynikalo?Napewno nie w tym: Cytat The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called. ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 17.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Nie, z definicji wynikało jasno które errory nie są obsługiwane heh... a przecież mogli napisać równie dobrze, które errory SĄ obsługiwane przez funkcję i nie byłoby problemu. Źle zinterpretowałem przykład numer 1. Uznałem, że przykład będzie przedstawiał wszystkie możliwe typy błędów uwzględnianych przez funkcję, zwłaszcza gdy zobaczyłem ustawiony tam error_reporting tylko na typy E_USER_*
Na dodatek powtarza się ta sytuacja w komentarzach do funkcji napisanych przez userów, nikt tam nie korzysta z E_WARNING, a jedynie z E_USER_*. Trzeba jednak zawsze wszystko sprawdzić samemu ![]() -------------------- Pozdrawiam,
Foxer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.07.2025 - 10:12 |