140 likes | 251 Views
Web-applikasjoner Prosjekt3 Logging. Gruppe 9 Malik Muhammad Naeem Kevan Qureshi. Hvorfor bruke logging?. Logg gir presis beskrivelse av en kjørende applikasjon Logg kan lagres til en fil og deretter leses senere. For mange er det nyttig å vite hva som skjer uten å sette seg inn i koden.
E N D
Web-applikasjoner Prosjekt3 Logging • Gruppe 9 • Malik Muhammad Naeem • Kevan Qureshi
Hvorfor bruke logging? • Logg gir presis beskrivelse av en kjørende applikasjon • Logg kan lagres til en fil og deretter leses senere. • For mange er det nyttig å vite hva som skjer uten å sette seg inn i koden
Når skal man bruke logging? • I utviklingsstadiet:- Logg funksjonen kan hjelpe deg med å debuge koden din • I et produksjonsmiljø:- Hjelper deg med å feilsøke problemer som oppstår
Apache logging • http://logging.apache.orgVi har 3 forskjellige logge rammeverk: • Log4j for Java • Log4cxx for C++ • Log4net for Micosoft .NET
Apache log4j • Apache log4j har tre utviklingsgrener: • En stabil versjon 1.2 • En nedlagt versjon 1.3 • En eksperimentell versjon 2.0
Hello.java log4j • Last ned log4j fra logging.apache.org • Pakk ut .zip filen deretter • Legg log4j-VERSION.jar i din classpath • Du kan nå teste om det fungerer ved å kjøre følgende kode:
Hello.java log4j import org.apache.log4j.Logger; import org.apache.log4j.BasicConfigurator; public class Hello { private static final Logger logger = Logger.getLogger(Personnr.class); public static void main(String argv[]) { BasicConfigurator.configure(); logger.debug(“HeiVerden."); logger.info(“Ha en fin dag."); } }
Resultat av Hello.java • 0 [main] DEBUG Personnr - Hei Verden. • 16 [main] INFO Personnr - Ha en fin dag.
Skrive til fil • Ting styres via en log4j.properties fil som må legges i src katalogen • Du kan også bruke xml for det samme. Log4j ser først etter en xml fil, deretter en dtd fil også leser den av log4j.properties. log4j.rootCategory=warn, stdout, R -> 2 stk apenders, den siste bruker vi til å lagre til fil. • log4j.appender.R.File=example.log
Log4j.properties • #### Use two appenders, one to log to console, another to log to a file • log4j.rootCategory=debug, stdout, R • # Print only messages of priority WARN or higher for your category • log4j.category.your.category.name=WARN • # Specifically inherit the priority level • #log4j.category.your.category.name=INHERITED • #### First appender writes to console • log4j.appender.stdout=org.apache.log4j.ConsoleAppender • log4j.appender.stdout.layout=org.apache.log4j.PatternLayout • # Pattern to output the caller's file name and line number. • log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n • #### Second appender writes to a file • log4j.appender.R=org.apache.log4j.RollingFileAppender • log4j.appender.R.File=example.log • log4j.appender.R.layout=org.apache.log4j.PatternLayout • log4j.appender.R.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n • # Control the maximum log file size • log4j.appender.R.MaxFileSize=100KB • # Archive log files (one backup file here) • log4j.appender.R.MaxBackupIndex=1
Log4j.xml • Alternativ til log4j.properties: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > <log4j:configuration> <appender name="stdout" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n"/> </layout> </appender> <root> <priority value="debug"></priority> <appender-ref ref="stdout"/> </root> </log4j:configuration>
Flere nivåer ved logging • all Alle nivåer er inkludert customs-levels. • trace for utvikling; kan brukes til å følge med på oppstart av et program • debug for utvikling og debugging • info optionally; beskjeder som er på samme nivå som “verbose” mode. • warn For advarsel beskjeder som blir logget til en fil f.eks. Eller når noen prøver å logge seg inn med ugyldig passord • error For applikasjon feilmelding • fatal For kritiske feilmeldinger. Som f.eks at database-serveren ikke fungerer. • no Logger ikke I det hele tatt
Anbefaling • Ikke bruk System.out.println • Bruk log4j