Archive

Posts Tagged ‘error handling’

Rukovanje greškama u Code Igniter-u

januar 7th, 2012 1 comment

Verovatno vam se prilikom programiranja u CodeIgniter-u (CI) dešavalo da ste postavljali „markere“ u vidu echo funkcije i gledali šta će se u određenim situacijam pojaviti. Najveći problem je što ih posle morate i ukloniti.

CI je taj problem rešio na interesantan način kroz rukovaoc greškama. Kompletnu dokumentaciju možete pogledati an lokaciji Error Handling.

Funkcija koja je nama ovom prilikom interesantna je log_message(‘level’, ‘message’). Njena namena je da, u zavisnosti od definisanog nivoa vrši upis u log fajl. Da bi upis mogao da se obavi, potrebno je da /system/logs/ (/application/logs/ za CI v2) folder ima postavljene privilegije za pisanje.

Postoje 3 ponuđena nivoa (prvi parametar):

  • error = 1 – koristi se kada želimo da upišemo poruku o nekoj grešci
  • debug = 2 – koristi se kada želimo da upišemo poruku koja nam pomažu prilikom otkrivanja grešaka (debug mod)
  • info = 3 – koristi se kada želimo da upišemo neku informaciju u log

Drugi parametar je poruka koju želimo da upišemo.

Koje poruke će se upisivati zavisi od podešavanja koje se nalazi u config.php dokumentu pod stavkom $config[‘log_threshold’]. Inicijalna vrednost je 1 (samo greške). Moguće vrednosti su od 0 do 4, pri čemu 0 ne vrši nikakav upis, 4 vrši upis svih poruka, a brojevi između definišu određeni tip (broj uz naziv tima gore naveden).

U dokumentaciji je naglašeno da nije dobro da stoji vrednost veća od 1 jer se log fajl može brzo napuniti, ali to je stvar organizovanja, u svakom slučaju treba obrati pažnju na ovaj detalj jer svaki od log fajlova utiče na prostor koji vaš projekat zauzima na serveru i ako ste prostorno ograničeni (zakupljenim hosting paketom) može nastati problem.

Način definisanja je po mom mišljenju malo nesretno rešen. Isprva sam mislio da su koristili binarno označavanje željenog tipa, ali kada sam video da je info označen sa 3 shvatio sam da nije tako osmišljeno. Jednostavno su tipovima dodeljivali brojeve po redu. Problem se javlja ukoliko bi želeli da, npr. postavite upis error i info tipa. To nije moguće (u binarnom slučaju bi bilo). Tipovi jedan drugi uključuju, pa tako ukoliko definišete da želite upis informacija (3), to automatski znači da upisujete i tipove error i debug. Sti u vezi, ne vidim svrhu postavljanja vrednosti 4 (svi tipovi) pođto je to već sadržano sa 3.

U svakom slučaju, koristan alat prilikom rada na projektima i ne zaboravite da kada završite rad na projektu vrednost postavite na 0, eventualno na inicijalnu vrednost 1 kako bi samo greške bile upisivane.

Categories: PHP Tags: , ,