Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa Excepton, która zgłaszane wyjątki zapisuje do pliku
Forum PHP.pl > Forum > PHP
likemandrake
Witam

Jestem na topie tworzenia klasy LogedException, ktora dziedziczy poklasie Exception, z tym wyjatkiem ze moja klasa bedzie odpowiednie komunikaty logowala do pliku.

Pytanie dotyczy tego, jak zachowac sie z obsluga bledow w tej klasie, typu nie otwarto pliku, bo brak uprawnien, czy tam katalog nie istnieje (w sumie to beda wlasnie tylko ewentualne bledy zglaszane przez funkcje do operacji na plikach). Zglaszanie tego typu bledow przez tworzenie nowego wyjatku typu Exception nie ma tu raczej sensu, bo sama klasa jest do tego zadania, generowanie bledow przez funkcje trigger_error znow nie jest dopuszczalne w powaznym serwisie, konkretnie chodzi o same wyswietlenie bledu na stronie (to jest niedopuszczalne), tak wiec czy sa jakeis pomysly? czy mam po prostu niereagowac na wynikle bledy i uzywac funkcji do oblslugi plikow pomijajac je znakiem "@" ?

Prosze o powazna porade

Pozdrawiam
starach
Jak wystąpi błąd krytyczny to loguj do pliku xml z datą wystąpienia błędu , jego opisem z debug_backtrace(), adresem ip użytkownika oraz ewentualnie całym urlem żadnym przez klienta i powiadamiaj na email admina.
likemandrake
Witam

Wiec pojawia sie pytanie, kiedy funkcje do obslugi plikow (tutaj fopen, fwrite, bo inne nie beda potrzebne) zglaszaja blad krytyczny? Z tego co wiem to nigdy, nie wiem czy sie zrozumielismy, ale mnie chodzilo o blad ktory wystapi w klasie LoggerException (np nie udalo sie otworzyc pliku, do ktorego klasa loguje wyjatki, jakie sa do niej przeslane), a nie jak zostanie zgloszony wyjatek. Jak mowilem, klasa ktora chce napisac, zglaszane wyjatki ma logowac do pliku.

Pozdrawiam serdecznie
mike
Możesz robić tego typu rzeczy:
  1. <?php
  2.  
  3. $fileHandle = @fopen('file.txt', 'r');
  4. if ($fileHandle === false) {
  5. throw new Exception();
  6. }
  7.  
  8. ?>
I dopiero to łapać i obsługiwać. Inaczej tego nei zrobisz.
Poza oczywiście przepisaniem systemu obsługi błędów na swój.
fridek
No właśnie, zawsze masz jeszcze error_reporting(E_ALL) i error_handler().
likemandrake
Dobra dzieki za wszystko, czyli w sumie niczego nowego sie nie dowiedzialem, bo terminy ktore sie pojawily nie sa mi obce smile.gif Myslalem, ze moze da sie to jeszcze zrobic w inny sposob, stad ten post...

W kazdym razie, jeszcze raz wielkie dzieki za fatyge

Pozdrawiam
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.