[ DeYo @ 08.02.2007. 10:50 ] @
U firmi zavrsavamo web apliakciju: Struts + biznis framework + Oracle.

Trenutno sredjujem (nazovi refactoring) biznis framework koji smo sami pravili.
Tokom razvoja istog na try-catch delovima smo imali prikaz citavog StackTrace-a za svaku gresku. Takodje prilikom pozivanja svake od metoda klasa iz frejmorka na konzoli je prikazivan i log o tome da je ista pozvana kao i koji je user pozvao.

Sve ovo mi deluje nezgrapno za ostaviti, jer aplikaciju ce koristiti klijentska firma a ne mi koji smo je razvijali. A opet kada bude dolazilo do neminovnih gresaka i pucanja aplikacije bilo bi pozeljno da admin klijentske firme moze da nam posalje koristan log.

Koji bi pristup bio najbolji? Ostaviti sve da se prikazuje? Prosledjivati u nekakav log fajl umesto na output konzole?

Kakva su vasa iskustva? Korisni linkovi?
[ djalfirevic @ 08.02.2007. 20:19 ] @
Hmmm... Interesantno pitanje. Mislim da tu ne postoji neki kodeks tipa 'treba ovo obavezno uraditi, a ovo nikako'. Mislim da je sustina da vama olaksate stvar ukoliko dodje upravo do tih neminovnih gresaka, a po meni mislim da si rekao resenje toga. Nekako mi taj log fajl deluje kao jako dobra stvar. Stavise, i veliki softverski giganti upravo to rade na taj nacin...

Mozda ne bi bilo lose da se integrise JavaMail API pa ukoliko dodje do recimo neke greske, da se automatski StackTrace salje do vaseg servera i da vi trenutno imate uvid sta se desava sa aplikacijom. Nesto kao Error Reporting.



[Ovu poruku je menjao hyle dana 08.02.2007. u 22:10 GMT+1]
[ ph4t @ 08.02.2007. 21:05 ] @
Pretpostavljam da koristis neku library za logging. Mozes default da stavis da se vazne poruke printaju na consolu a sve poruke u neki log file. Mada ja bi u produkciji ostavio samo vazne poruke zasto sto printanje debug informacije usporava rad. Dobra stvar kod logging libraries je da u properties file to lagano mozes da promjenis.
[ hyle @ 08.02.2007. 21:54 ] @
Uzmite neko gotovo rešenje za logovanje, npr. Log4j.
Gotovo rešenje je brzo i omogućava vam korišćenje različitih nivoa logovanja (debug, info, warning, error). Na primer pozivanje svake od metoda možete logovati kao debug, inicijalizaciju pojedinih delova sistema kao info, a greške kao error. Za svaki od paketa iz vaše aplikacije možete definisati minimalni nivo logovanja koji će se beležiti i prvo vreme možete držati aplikaciju konfigurisanu na debug logovanje a kada stvari "legnu" možete preći na neki viši nivo logovanja, npr. info.

Mehanizam je dosta fleksibilan i možete definisati maksimalnu veličinu log fajla, pattern za ispis u fajl ili konzolu i sl. Pogledaj, nije teško za korišćenje.

Ako je vaša aplikacija predstavlja neku vrstu biblioteke koja će biti korišćena u okviru većeg sistema onda ne bi bilo dobro da se logovanje vaše aplikacije razlikuje od ostatka sistema. U tom slučaju možete iskoristiti Jakarta commons logging koji bi vam omogućio da se vaše logovanje integriše u postojeći sistem logovanja glavne aplikacije.
[ lukeguy @ 08.02.2007. 21:55 ] @
Ako ćeš trace koristiti za otkrivanje grešaka, mislim da je najbolje da se ceo output smesti u fajl. A potom omogućiš da se taj fajl šalje mailom tebi u firmu ili nešto slično. Ne očekuj da će korisnik umeti (ili pak imati vremena) da ti čita sa ekrana stack trace. A da svaki put neko izlazi na teren da pročita stack trace, pa... :) Na kraju, bez ovih informacija ćeš jako teško raditi debug. Naravno, ne moraš stavljati sve živo, ali nemoj ni štedeti. Što više informacija, lakše ćeš otkriti gde nastaje greška, zašto itd.
[ anon315 @ 08.02.2007. 23:19 ] @
Slicna prica, web aplikacija na vrhu, u sredini dosta biznis logike, dole Oracle DB. Applikacija se vrti na Oracle AS. Logovanje je odradjeno brzinski, ali zavrsava posao - koristi se java.util.logging, a sam server je prekonfigurisan za nas specifican log. U okviru Enterprise Managera postoji deo za pracenje logova koji ima dosta dobru pretragu. Na taj nacin admini i/ili programeri lako lociraju i analiziraju greske. Nije bog zna sta, kazem brzinsko resenje, ali mislim da ti tako nesto bas treba. Dakle, vidi mozda mozes da iskoristis server da ti odradi deo posla.

Inace, bas sam skoro doradjivao jednu veliku Swing aplikaciju, pa sam tamo negde naleteo i svi exceptioni i cuda koja su logovali i debagovali se nisu izbacivala na konzolu, koliko god System.out.printova ja ispisao i onda sam negde locirao parcence koda koje sve to preusmerava u fajl. Koliko se secam, koristila se neka metoda iz System. Ukoliko se ne snadjes, javni pa cu da proceprkam...
[ DeYo @ 09.02.2007. 08:28 ] @
Hvala svima na informacijama.

Pogledacu navedene biblioteke, pa se verovatno vracam sa novim pitanjima ;)