En introduktion til logning for programmører

Der er en del af softwareudvikling, som ikke alle udviklere tager meget alvorligt. Denne del er korrekt logføring, og alle, der har mistet utallige timer under fejlretning, ved præcis hvad jeg mener.

Nyttige logfiler kan give udvikleren (især når nogen skal fejle / vedligeholde en andens kode) med enorm hjælp, når han prøver at forstå, hvad koden rent faktisk gør. Nogle udviklere siger, at stack-trace er alt, hvad nogen nogensinde skulle have brug for, men det kunne ikke være længere fra sandheden. Stakspor er gode og kan fortælle dig, hvor og hvad der gik galt, men de kan ikke fortælle dig, hvordan du kom der i første omgang. Du kan helt sikkert følge udførelsen gennem brudpunkter, men ved at gå i blinde vil det gøre hele processen meget mere tidskrævende, end den faktisk burde og kunne være.

Det er den diagnostiske del af logning, den vigtigste og dybest set den, som udviklere kunne forstå lettere, da det mere er en del af deres daglige arbejdsrutine. Der er en anden del, der kaldes audit logging. Hvor diagnostisk logning tager sig af registrering af de hændelser, der sker under runtime (metodeopkald, input / output, HTTP-opkald, SQL-udførelser), er auditlogning ansvarlig for registrering af mere abstrakte forretningslogiske begivenheder. Sådanne begivenheder kan være brugerhandlinger (tilføjelse / redigering / fjernelse af indhold, transaktioner, adgangsdata) eller andre ting, der enten har ledelsesværdi eller, vigtigere, juridisk værdi.

I back end-verdenen har der været nogle gode logningsrammer at vælge imellem, da behovet for dem opstod meget tidligere. For eksempel i Java kan du vælge mellem Java's egen logmotor, java.util.logging eller nogle gode eksterne rammer som Logback eller den mest populære Log4j.

I frontendverdenen er tingene ikke nået så langt endnu, men der er muligheder, der kan hjælpe dig med at gøre den ekstra mil (og selvfølgelig slippe af med trivielle console.log-meddelelser). To sådanne Javascript-biblioteker til frontenden er det minimale, men kraftfulde loglevel og browser-bunyan, en port til det fantastiske node.js-logningsmodul til browseren. Nogle funktioner er almindelige mellem disse rammer, men der er unikke, som skal guide udvikleren til at vælge, hvilken han har brug for. Brugen af ​​disse kan vises med nogle eksempler.

Manifest: Serverlogfiler skal være struktureret. JSON er et godt format. Lad os gøre det.

Som det oprindelige Bunyans manifest går, skal logfiler struktureres og let indekseres, filtreres, søges. Denne fantastiske ramme producerer logfiler i JSON-format, som derefter let kan forbruges af andre tjenester til videre behandling.

Bortset fra JSON-eksportfunktionen har Bunyan konceptet med børneloggere, som kan bruges til at oprette forskellige loggere til forskellige komponenter i applikationen. Det giver stor fleksibilitet med hensyn til hvilke felter og ekstra info du kun vil medtage i bestemte dele af din applikation. Bunyan inkorporerer også streams, som er 'output' indstillingerne for dets loggere. Du kan oprette flere streams og tildele en malm mere til hver logger, og hver stream kan have forskellige indstillinger som minimumsniveauet for logfiler, der skal registreres (acceptable niveauer af Bunyan er fatal / error / warn / info / debug / trace) eller outputmetode ( i browseren er der kun konsolrelaterede muligheder, men i et Node-miljø kan du gøre andre ting som at skrive logfiler til en bestemt fil).

Dette er et barebones pålideligt hverdagsloggbibliotek. Det gør ikke smarte ting, det lader dig ikke omkonfigurere appenders eller tilføje komplekse logfiltreringsregler eller koge te (mere er skam), men det har alle kernefunktionaliteter, som du rent faktisk bruger

Med en ganske beskeden erklæring præsenterer loglevel sig en minimal logningsramme, der tilføjer bare det absolutte minimum, som de fleste applikationer har brug for. Det tilføjer noget korrekt niveaubaseret logning (sporing / fejlretning / info / advarsel / fejl) og filtrering af, hvad der er det mindste niveau, der skal vises på konsollen.

Kraften i denne ramme er dens enkelhed, da det er let at integrere det i dit projekt og begynde at bruge det og erstatte console.log () for evigt. Desuden har loglevel endnu en skjult perle, dens udvidelighed, da der er skrevet forskellige plugins til den, der giver ekstra funktioner til dem, der ønsker dem, som forud for beskeder.

Uanset hvilken ramme du i sidste ende vælger til din JavaScript-applikation, sparer du helt sikkert mange timers arbejde under fejlretning og gør din applikation mere fremtidssikker.