Avatar billede krukken Mester
14. juni 2005 - 15:55 Der er 14 kommentarer og
1 løsning

Logning af Exception

Hej,

Er det muligt at få fat på den besked som printStackTrace() udskriver ved en exception? Det ville jo være lækkert at kunne bruge til loging - så man kan se præcis hvor derer opstået en fejl.
Avatar billede arne_v Ekspert
14. juni 2005 - 15:56 #1
ex.getStackTrace()

giver dig det du vil have
Avatar billede krukken Mester
14. juni 2005 - 16:01 #2
e.getStackTrace()[0]  - så har man i hvert fald første linie:-) Sorry
Avatar billede simonvalter Praktikant
14. juni 2005 - 16:03 #3
Og de nye for loop er rigtig nice :)
for (StackTraceElement element : e.getStackTrace()) {
  System.out.println(element);
}
Avatar billede simonvalter Praktikant
14. juni 2005 - 16:09 #4
System.err.println(e);
            for (StackTraceElement element : e.getStackTrace()) {
                System.err.println("\tat "+element);
            }

og så har du det samme som e.printStackTrace()

men bruger du et logging framework så er det bare logger.debug(e); .. den klarer det for dig.
Avatar billede krukken Mester
14. juni 2005 - 16:09 #5
Okay - med andre ord er der ikke andre muligheder end at løbe det hele igennm for at få fat på alle beskeder - og man kan dermed ikke bare siger toString()?

De nye forsætninger er det i 1,5?
Avatar billede simonvalter Praktikant
14. juni 2005 - 16:12 #6
jep for loopet er fra 1.5
Avatar billede simonvalter Praktikant
14. juni 2005 - 16:13 #7
Jeg vil også anbefale dig at kigge på f.eks log4j til logging. Det er rigtig smart og tager ikke ret lang tid at få styr på.
arne har vist nok skrevet en artikel om det.
Avatar billede arne_v Ekspert
14. juni 2005 - 16:37 #8
hvis du vil have det i flere linier (skam dig !) så er printStackTrace jo god nok

hvis du vil hav edet i en linie (bedst !) så skal du jo alligevel selv konkatenere
tingene
Avatar billede arne_v Ekspert
14. juni 2005 - 16:37 #9
Avatar billede krukken Mester
14. juni 2005 - 17:19 #10
Jeg vil gerne have det skrevet til en fil - så jeg kan finde frem til fejl længe efter at de er opstået. Så jeg forstår ikke hvordan jeg kan bruge printStackTrace()?

Hvorfor skal jeg skamme mig over at have det i flere iinier?

Ligger du et svar?

simonvalter > Jeg tror ikke at jeg gider til at sætte mig ind i det - jeg er praktisk talt færdig med hele modulet. Desuden er det jo altid rart at lave tingene selv - så ved man hvordan man skal rette fejlene. Desuden så er der jo større sandsynlighed for fejl jo større "pakke" man bruger til at løs en opgave. Jeg har faktisk læst et sted at i større programmer som Windwos findes der i gennemsnit en fejl i hver tredje linie kode.
Avatar billede simonvalter Praktikant
14. juni 2005 - 17:47 #11
krukken jeg siger ikke du skal sætte dig ind i det nu.. selv om det nok til dit brug kan klares på 30 minutter. Jeg anbefaler det ud fra at du er i en lære process som mig selv og jeg vil mene det er naturligt at kigge på sådanne løsninger.. især en ting som logging som vil gå igen fra projekt til projekt og så er et logging framework en meget brugt løsning frem for at skrive sit eget hver gang.
Jeg tvivler også på at et så benyttet projekt som log4j har fejl som du vil bemærke... at der er kan være og sansyligvis er fejl i andres kode bør ikke holde dig fra at bruge det... det stopper jo dig ikke fra at skrive din egen sansyligvis ligeså fejlfyldte kode... men selvføligelig smider man ikke hvad som helst ind i sit projekt uden at evaluere det... og er det overkill og bruge et logging framework så til dit projekt skal du heller ikke gøre det... men du bør aligevel være opmærksom på muligheden.
Avatar billede arne_v Ekspert
14. juni 2005 - 18:06 #12
der er en printStackTrace uden argument som  skriver til System.err og
en med argument hvor du kan angive en PrintWriter som den skal skrive til
Avatar billede arne_v Ekspert
14. juni 2005 - 18:07 #13
log filen bliver umulig at parse maskinelt og også betydeligt sværere at søge
i med diverse værktøjer når en log message går ud over flere linier

ikke noget problem med 50 linier

men et stort problem hvis log filen bliver 50 MB
Avatar billede arne_v Ekspert
14. juni 2005 - 18:07 #14
og et svar
Avatar billede simonvalter Praktikant
14. juni 2005 - 18:13 #15
det behøver iøvrigt heller ikke at være log4j java har det indbygget fra version 1.4 under java.util.logging.* log4j skulle bare være mere effektiv så vidt jeg hører.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester