Programmering

Logge på Python - din one stop guide

Logge på Python - din one stop guide

Logging er et avgjørende trinn som en programmerer skal utføre under programvareutvikling. Det hjelper utviklere å spore hendelser som skjer under gjennomføringen av et program, noe som kan være nyttig for den fremtidige feilsøkingsprosessen. Hvis du er en ny elev eller jobber med et nytt prosjekt, er det god praksis å bruke logging for å spore kodestrømmen og for å løse feil.

Mens vi skriver korte programmer, ignorerer de fleste av oss vanligvis loggføring, men når programmet blir komplisert, er det et viktig og nyttig trinn å bruke loggføring for å fikse feilene som hindrer programvaren i å fungere problemfritt. Logging er ikke mer enn å skrive hendelsene i programvaren til en loggfil eller sende ut terminalen.

Logging brukes ikke bare til feilsøking. Det er også en nyttig prosess for å samle informasjon, samle bruksdata og mange andre nyttige oppgaver. Det er også en av de vanligste funksjonene for webutviklere, ikke bare for å oppdage feil, men også for å samle inn brukerdata som IP-adresser, som kan brukes til videre forretningsanalyse.

I Python er de fleste loggfasilitetene levert av hogst modul presentert i pythons standardbibliotek, slik at vi ikke trenger å gjøre noen ekstra konfigurasjon. La oss se hvordan du bruker den til å logge på python. Før du følger denne opplæringen, er det nødvendig å ha den nyeste versjonen av python installert på systemet ditt. Hvis du ikke har den nyeste pythonen installert i systemet ditt, kan du følge vår trinnvise veiledning for installering og oppdatering av python på Linux.

Python Logging Module

Pythons loggmodul er en av de mest brukte loggbibliotekene i python. Den beste delen er at den kommer forhåndsinstallert med pythons standardbibliotek, så vi trenger ikke å gjøre noen konfigurasjon eller installasjon. Loggmodulen er robust og grei, noe som betyr at den er nyttig for både nybegynnere og bedrifter. For å bruke loggmodulen i python, må vi importere den til programmet vårt som jeg gjør i følgende kodelinje.

importlogging

La oss nå se en demo av hvordan vi kan logge noen meldinger til terminalen. Bare kopier følgende kode til din favoritt python IDE og kjør.

import logging logging.advarsel ("Dette er en advarsel")

Når du kjører ovennevnte kode, vil vi få utdataene som vist i bildet nedenfor.

Som det vises i utskriften, skriver programmet ut en advarsel. Loggmodulen har også noen andre nivåer av logging som info, feil osv., som gjør oppgaven vår enkel. La oss diskutere dem kort med eksempler.

Python logging nivåer

Mange nivåer av logging kan brukes til å logge forskjellige meldinger på alvorlighetsnivået. Nivåene som er gitt av python hogst modul er

Disse nivåene vises i avtagende rekkefølge av alvorlighetsgraden. La oss se hvordan vi bruker disse nivåene i programmet vårt. Bare kopier følgende kode og kjør i Python IDE.

import logging logging.kritisk ("Dette er en kritisk melding") logging.feillogging ("Dette er en feilmelding").advarsel ("Dette er en advarselsmelding") logging.info ("Dette er en infomelding") logging.feilsøking ("Dette er en feilsøkingsmelding")

Når du kjører ovennevnte kode i IDE, vises utgangen som terminalen viser i bildet nedenfor.

Som du kan se i utdataene, blir DEBUG- og INFO-meldingene ikke skrevet ut i terminalen fordi loggmodulen som standard bare logget meldinger med sikkerhetsnivå som er høyere enn eller lik advarselen. For å vise INFO og DEBUG i terminalen, må vi endre den grunnleggende konfigurasjonen av loggeren manuelt. For å gjøre dette kan vi bruke basicConfig (**kwargs) -metoden som tilbys av loggmodulen. For å se en enkel demonstrasjon av konfigurasjon, kjør bare følgende kode i Python IDE.

import logging logging.basicConfig (nivå = logging.DEBUG) logging.kritisk ("Dette er en kritisk melding") logging.feillogging ("Dette er en feilmelding").advarsel ("Dette er en advarselsmelding") logging.logging av info ("Dette er en infomelding").feilsøking ("Dette er en feilsøkingsmelding")

I koden ovenfor har vi satt nivået på hogst.DEBUG, som betyr at alle nivåene som er over feilsøkingsnivået logges. Dermed logges alle meldingene i koden ovenfor som vist på bildet nedenfor.

La oss diskutere mer basicConfig () -metoden til loggmodulen.

Grunnleggende konfigurasjoner

Loggningsmodulen gir en veldig nyttig metode basicConfig (** Kwargs), som brukes til å sette konfigurasjoner for loggdata. Noen av de vanligste parametrene til basicConfig () -funksjonen er:

La oss se hvordan vi kan bruke disse konfigurasjonene i pythons loggmodul ved å utforske eksemplet på en etter en.

Nivåparameteren brukes til å stille inn alvorlighetsgraden, for å se en praktisk demo om hvordan du bruker den, kopiere koden nedenfor i python IDE og kjør.

import logging logging.basicConfig (nivå = logging.INFO) logging.kritisk ("Dette er en kritisk melding") logging.feillogging ("Dette er en feilmelding").advarsel ("Dette er en advarselsmelding") logging.logging av info ("Dette er en infomelding").feilsøking ("Dette er en feilsøkingsmelding")

Når du kjører koden, ser du kanskje utdataene, som vist på bildet nedenfor. Som du kan se at meldingene som ligger over informasjonsnivåene skrives ut, men meldingen på feilsøkingsnivået skrives ikke ut.

Nivåparameteren er en nyttig konfigurasjon som bør gjøres slik at loggfilene ikke var for store ved å inneholde unødvendige data og bare har den nødvendige informasjonen.

Logger på en fil

Vi har bare sett hvordan vi skal logge på terminalen, men det er ikke alltid nyttig å logge på terminalen, ettersom vi ikke kan lagre den for senere bruk. For en bedre løsning kan vi skrive ut loggene i en tekstfil som vi lagrer og analyserer senere. Loggene er tekst og kan oppbevares i en tekstfil i hvilket som helst format, men generelt er det vedtatt for å lagre loggene i en fil med .loggutvidelse. Disse filene er kjent som loggfiler og brukes universelt til å lagre logger over programmer, webapplikasjoner og annen programvare.

Vi kan lagre logger til en fil ved å sette opp konfigurasjonen til loggmodulen ved hjelp av basicConfig () -funksjonen. Vi må gi navnet på filen der vi vil lagre loggene i filnavnparameteren til basicConfig () -funksjonen, hvoretter postene automatisk skrives ut i loggfilen vi spesifiserer. La oss se et praktisk eksempel for å vite hvordan det fungerer.

import logging logging.basicConfig (nivå = logging.INFO, filnavn = "mylog.logg ") logging.kritisk ("Dette er en kritisk melding") logging.feillogging ("Dette er en feilmelding").advarsel ("Dette er en advarselsmelding") logging.info ("Dette er en infomelding") logging.feilsøking ("Dette er en feilsøkingsmelding")

Når du kjører koden, kan du se at en ny fil er opprettet i det nåværende arbeidskatalognavnet mylog.Logg. Når du åpner filen med et tekstredigeringsprogram, kan du merke at loggene ble lagret i filen.

Hvis vi kjører koden på nytt, ser vi at loggen blir lagt til i filen. Vi kan endre dette ved å spesifisere filemode-parameteren i basiconfig () -funksjonen. Som standard har filemodeparameteren verdien "a", som står for append. Men noen ganger vil vi også slette de tidligere loggede dataene og bare skrive de nye loggene i filen. For å gjøre dette kan vi gi filemode-parameteren verdien "w", som står for skrive, og den sletter alle tidligere data i filen og skriver de nye. For en demo, se følgende eksempel.

import logging logging.basicConfig (nivå = logging.INFO, filnavn = "mylog.logg ", filemode =" w ") logging.kritisk ("Dette er en kritisk melding") logging.feillogging ("Dette er en feilmelding").advarsel ("Dette er en advarselsmelding") logging.info ("Dette er en infomelding") logging.feilsøking ("Dette er en feilsøkingsmelding")

Når du kjører ovennevnte kode, kan du legge merke til at de tidligere loggene i filen er fjernet fra filen, og at de nye loggene er lagt til. Hver gang vi kjører koden, vil de nye loggene bli lagt til, og den forrige vil bli slettet, noe som er nyttig når vi ikke trenger postene for videre bruk.

Formatering av loggene

Vi har sett at utgangsloggene har standardoppsettet, men vi kan endre formatet ved å sette formatparameteren til basicConfig () -funksjonen. La oss se en praktisk demo for å vite hvordan vi kan bruke formatparameteren i basicConfig () -funksjonen til å endre formatet på loggen.

import logging logging.basicConfig (nivå = logging.INFO, format = "% (filnavn) s:% (nivånavn) s:% (melding) s") logging.kritisk ("Dette er en kritisk melding") logging.feil ("Dette er en feilmelding") logging.advarsel ("Dette er en advarselsmelding") logging.info ("Dette er en infomelding") logging.feilsøking ("Dette er en feilsøkingsmelding")

Resultatet av koden ovenfor er som vist i bildet nedenfor.

Som du kan se i utdataene, har filnavnet også blitt vist. Vi kan bruke formatparameteren for å indikere at mange andre formater kan diskutere noen av dem.

% (asctime) s: Dette brukes til å vise den menneskelesbare tiden i loggene. For å se hvordan det viser tid, kjør følgende kode i Python IDE.

import logging logging.basicConfig (nivå = logging.INFO, format = "% (asctime) s:% (message) s") logging.advarsel ("Dette er en advarselsmelding")

Når du kjører koden, ser du kanskje utdataene, som vist på bildet nedenfor.

% (opprettet) f: Dette vil vise tiden loggen opprettes.

% (filnavn) s: Dette brukes til å vise navnet på filen i loggmeldingen. For å se hvordan det fungerer, kjør bare følgende eksempelkode i Python IDE.

import logging logging.basicConfig (nivå = logging.INFO, format = "% (asctime) s:% (filnavn) s:% (melding) s") logging.advarsel ("Dette er en advarselsmelding")

Utgangen som koden gir, vises i det følgende bildet. I utgangen har navnet på filen blitt vist. Dette er nyttig når du arbeider med et prosjekt som involverer flere filer, slik at vi raskt kan få filen som har feilen.

% (nivånavn) s: Dette brukes til å vise navnet på det nivået som brukes som ADVARSEL, DEBUG osv.

% (nivånr) s: Dette brukes til å skrive ut den numeriske verdien til nivået som meldingen er en del av.

% (lineno) d: Dette brukes til å skrive ut linjenummeret på den aktuelle linjen, som viser meldingen. Dette er veldig nyttig ettersom det gir oss linjenummeret der vi må se for en feil, så det hjelper feilsøkingsprosessen. La oss se en eksempelkode for å se hvordan du bruker denne til å danne utdataene fra logger.

import logging Format = '% (asctime) s:% (filnavn) s:% (lineno) d:% (melding) s' logging.basicConfig (nivå = logging.INFO, format = Format) logging.advarsel ("Dette er en advarselsmelding")

Denne koden vil også skrive ut linjenr, som vist på bildet nedenfor.

% (melding) s: Den brukes til å vise meldingen om at vi har logget.

% (stienavn) s: Dette brukes til å vise hele stienavnet til kildekodefilen.

% (prosess) d: Dette vil vise prosess-ID hvis tilgjengelig.

% (prosessnavn) s: Dette viser prosessnavnet hvis det er tilgjengelig.

% (tråd) d: Dette vil vise tråd-ID hvis tilgjengelig.

% (threadName) s: Dette vil vise trådnavnet hvis tilgjengelig.

Logging av variable data

Vi har gitt meldingene i loggene av oss selv, som er statiske data. Likevel, i virkelige applikasjoner, vil dataene vi logget for det meste være dynamisk informasjon fra applikasjonen vår. For å gjøre dette, må vi sende variablene med meldingsloggen. Vi kan gjøre dette på mange måter. For eksempel kan vi inkludere variablene og formatere strengen med plassholdere og deretter overføre dem til meldingsloggen slik at verdiene til variablene blir matet ut i postene.

Se for eksempel koden nedenfor; du kan kopiere koden og kjøre i python IDE.

import logging var_message = "intern feil" logging.advarsel ("Serveren er stoppet på grunn av% s", var_message)

Når du kjører koden, vil du se utdataene, som vist på bildet nedenfor. Som du kan se på bildet at verdien som er lagret i variabelen også skrives ut på skjermen.

Vi kan også vise variabler i logger ved hjelp av f-strengene, som er introdusert i python 3.6. Men for å bruke f-strengene trenger du python 3.6 eller høyere installert i systemet ditt. Du kan sjekke hvilken pythonversjon som er installert i systemet ditt ved å kjøre følgende kommando i terminalen.

python --version # for python 2 på Linux python3 --version # for python 3 i Linux

Dette vil skrive ut versjonen av python du bruker i systemet ditt. Det er en god praksis å bruke den nyeste versjonen av python for å få bedre ytelse; du kan se vår guide for oppdatering av pythonversjonen i Linux.

For å formatere strenger ved hjelp av f-strengene i python, må vi bruke følgende kodesyntaks. Du kan kopiere og kjøre koden i din favoritt python IDE.

import logging var_message = "intern feil" logging.advarsel (f "Serveren er stoppet på grunn av var_message")

Når du kjører koden, får du utdataene som ligner på den vi får ved å kjøre ovennevnte kode. Men når vi ser koden, kan vi legge merke til f i begynnelsen av strengen, som representerer at den er en f-streng, og vi kan direkte bruke variabler i f-strenger ved å sette dem i krøllete bukseseler.

Logging av stabelspor

Loggmodulen kan også brukes til å registrere stakkspor. Stakkspor er unntaksmeldingene som kastes når det har oppstått en feil i programmet. Vi kan fange unntaket ved å sette opp parameteren exc_info til True mens vi kaller loggingsfunksjonen. Denne parameteren er nyttig da vi kan logge den komplette unntaksmeldingen med feilmeldingen i en fil eller terminalskjerm.

For å få en praktisk demo for å vite hvordan vi kan lofte stacksporene, kopier følgende kode til din python IDE og kjør.

import logging try: a = 1/0 unntatt Unntak som e: logging.error ("Det er oppstått en feil", exc_info = True)

Når du kjører koden, blir unntaket logget i terminalen. Du vil se utdataene fra koden, som vist i bildet nedenfor. Du kan også logge unntaket inn i en fil ved hjelp av filnavnparameteren i basicConfig () -metoden, som vi diskuterte ovenfor.

Denne metoden er også avgjørende for å bygge den omfattende applikasjonen, ettersom vi kan ha unntakshåndtering med logging, noe som er utmerket for feilsøkingsprosessen.

Loggerobjekter

Loggningsmodulen gir også noen nyttige klasser som kan brukes til bedre logging, hovedsakelig for en bredere applikasjon. La oss se noen av de mest brukte klassene i loggmodulen og hva og hvordan de fungerer.

Hvis du vil ha fullstendig detalj om hvordan du bruker disse klassene, kan du se den offisielle dokumentasjonen til python-loggmodulen.

Konklusjon

I denne artikkelen har vi lært det grunnleggende om å gjøre innlogging i python. Loggingsmodulen er en grei og kraftig måte å logge på python på. Anta at du ikke gjør logging til nå, i dag er dagen for å komme i gang med logging mens du leser artikkelen og lærte hvor enkelt det er å bruke logging i python. Du kan nå bruke innlogging i både små og viktige applikasjoner.

Hvis du logger riktig, vil det virkelig være nyttig på en eller annen måte. Jeg anbefaler deg å begynne å bruke den fra små programmer, da det vil hjelpe deg å få god kunnskap om tingen eller to, og vil være uvurderlig for store prosjekter. Det kan også være lurt å se hvordan du jobber med SQLite-databaser i python. 

Topp 10 spill å spille på Ubuntu
Windows-plattformen har vært en av de dominerende plattformene for spill på grunn av den enorme andelen spill som utvikles i dag for å støtte Windows ...
5 beste arkadespill for Linux
I dag er datamaskiner seriøse maskiner som brukes til spill. Hvis du ikke kan få den nye høye poengsummen, vil du vite hva jeg mener. I dette innlegge...
Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...