Programmering

Log på Python - din one-stop guide

Log på Python - din one-stop guide

Logning er et afgørende trin, der skal udføres af en programmør under softwareudvikling. Det hjælper udviklere med at spore begivenheder, der sker under udførelsen af ​​et program, hvilket kan være nyttigt for den fremtidige fejlfindingsproces. Hvis du er ny elev eller arbejder på et nyt projekt, er det en god praksis at bruge logning til sporing af kodestrømmen og til løsning af fejl.

Mens vi skriver korte programmer, ignorerer de fleste af os typisk logning, men når programmet bliver komplekst, er det et vigtigt og nyttigt trin at bruge logning til at rette de fejl, der forhindrer softwaren i at køre problemfrit. Logning er intet andet end at skrive begivenhederne i softwaren til en logfil eller udgive i terminalen.

Logning bruges ikke kun til fejlfinding. Det er også en nyttig proces til indsamling af information, indsamling af brugsdata og mange andre nyttige opgaver. Det er også en af ​​de mest almindelige funktioner for webudviklere ikke kun at opdage fejl, men også at indsamle brugerens data som IP-adresser, som kan bruges til yderligere forretningsanalyser.

I Python leveres de fleste logningsfaciliteter af logning modul præsenteret i pythons standardbibliotek, så vi behøver ikke foretage nogen ekstra konfiguration. Lad os se, hvordan du bruger det til at logge på python. Før du følger denne vejledning, er det nødvendigt at have den nyeste version af python installeret i dit system. Hvis du ikke har den nyeste python installeret i dit system, kan du følge vores trinvise vejledning til installation og opdatering af python på Linux.

Python Logging Module

Pythons logningsmodul er et af de mest anvendte logbiblioteker i python. Den bedste del er, at den leveres forudinstalleret med pythons standardbibliotek, så vi behøver ikke foretage nogen konfiguration eller installation. Loggningsmodulet er robust og ligetil, hvilket betyder, at det er nyttigt for både begyndere og virksomheder. For at bruge loggningsmodulet i python er vi nødt til at importere det til vores program, som jeg gør i den følgende linje kode.

importlogning

Lad os nu se en demo af, hvordan vi kan logge nogle meddelelser ind i terminalen. Kopier bare følgende kode til din foretrukne python IDE og kør.

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

Når du kører ovenstående kode, får vi output som vist i nedenstående billede.

Som det ses i output, udskriver programmet en advarselsmeddelelse. Logningsmodulet har også nogle andre niveauer af logning som info, fejl osv., som gør vores opgave let. Lad os kort diskutere dem med eksempler.

Python-logningsniveauer

Mange logningsniveauer kan bruges til at logge forskellige meddelelser på sværhedsgraden. De niveauer, der leveres af python logning modul er

Disse niveauer er vist i faldende rækkefølge af deres sværhedsgrad. Lad os se, hvordan vi bruger disse niveauer i vores program. Kopier bare følgende kode og kør i Python IDE.

import logning logning.kritisk ("Dette er en kritisk besked") logning.fejl ("Dette er en fejlmeddelelse") logning.advarselslogning ("Dette er en advarselsmeddelelse").logning af info ("Dette er en infomeddelelse").debug ("Dette er en fejlretningsmeddelelse")

Når du kører ovenstående kode i IDE, vises det output, som terminalen viser, i billedet nedenfor.

Som du kan se i output, bliver DEBUG- og INFO-meddelelserne ikke udskrevet i terminalen, fordi loggningsmodulet som standard kun loggede beskederne på sikkerhedsniveau højere end eller lig med advarslen. For at få vist INFO og DEBUG i terminalen er vi nødt til at ændre loggerens grundlæggende konfiguration manuelt. For at gøre det kan vi bruge basicConfig (**kwargs) metode leveret af logningsmodulet. For at se en simpel demo af konfiguration skal du bare køre følgende kode i din Python IDE.

import logning logning.basicConfig (niveau = logning.DEBUG) logning.kritisk ("Dette er en kritisk besked") logning.fejl ("Dette er en fejlmeddelelse") logning.advarselslogning ("Dette er en advarselsmeddelelse").logning af info ("Dette er en infomeddelelse").debug ("Dette er en fejlretningsmeddelelse")

I ovenstående kode har vi indstillet niveauet for logning.FEJLFINDE, hvilket betyder, at alle niveauer, der er over fejlretningsniveauet, bliver logget. Således i ovenstående kode vil alle meddelelser blive logget som vist i nedenstående billede.

Lad os diskutere mere basicConfig () -metoden til logningsmodulet.

Grundlæggende konfigurationer

Logningsmodulet giver en meget nyttig metode basicConfig (** Kwargs), som bruges til at indstille konfigurationer til logning af data. Nogle af de almindeligt anvendte parametre for basicConfig () -funktionen er:

Lad os se, hvordan vi kan bruge disse konfigurationer i pythons logningsmodul ved at udforske eksemplet på en efter en.

Niveauparameteren bruges til at indstille sværhedsgraden, for at se en praktisk demo af, hvordan man bruger den, kopiere nedenstående kode i python IDE og køre.

import logning logning.basicConfig (niveau = logning.INFO) logning.kritisk ("Dette er en kritisk besked") logning.fejl ("Dette er en fejlmeddelelse") logning.advarselslogning ("Dette er en advarselsmeddelelse").logning af info ("Dette er en infomeddelelse").debug ("Dette er en fejlretningsmeddelelse")

Når du kører koden, kan du muligvis se output, som vist i nedenstående billede. Som du kan se, udskrives meddelelserne, der ligger over infoniveauerne, men meddelelsen på fejlretningsniveau udskrives ikke.

Niveauparameteren er en nyttig konfiguration, der skal udføres, så logfilerne ikke var for store ved at indeholde unødvendige data og kun har de nødvendige oplysninger.

Logger på en fil

Vi har kun set, hvordan man logger på terminalen, men det er ikke altid nyttigt at logge på terminalen, da vi ikke kan gemme den til senere brug. For en bedre løsning kan vi udskrive logfilerne i en tekstfil, som vi gemmer og analyserer senere. Logfilerne er tekst og kan opbevares i en tekstfil i ethvert format, men generelt vedtages det for at gemme logfilerne i en fil med .log udvidelse. Disse filer kaldes logfiler og bruges universelt til lagring af logfiler over programmer, webapplikationer og anden software.

Vi kan gemme logfiler i en fil ved at opsætte konfigurationen af ​​loggningsmodulet ved hjælp af basicConfig () -funktionen. Vi er nødt til at give navnet på den fil, hvor vi vil gemme logfilerne, i filnavnparameteren til basicConfig () -funktionen, hvorefter poster automatisk udskrives i den logfil, som vi specificerer. Lad os se et praktisk eksempel for at vide, hvordan det fungerer.

import logning logning.basicConfig (niveau = logning.INFO, filnavn = "mylog.log ") logging.kritisk ("Dette er en kritisk besked") logning.fejl ("Dette er en fejlmeddelelse") logning.advarselslogning ("Dette er en advarselsmeddelelse").logning af info ("Dette er en infomeddelelse").debug ("Dette er en fejlretningsmeddelelse")

Når du kører koden, kan du se, at en ny fil er oprettet i det aktuelle arbejdsmappens navn mylog.log. Når du åbner filen med en teksteditor, bemærker du muligvis, at logfilerne blev gemt i filen.

Hvis vi kører koden igen, ser vi, at logfilen tilføjes i filen. Vi kan ændre dette ved at angive parameteren filemode i funktionen basiconfig (). Som standard har filemode-parameteren værdien "a", som står for append. Men nogle gange vil vi også slette de tidligere loggede data og kun skrive de nye logfiler i filen. For at gøre dette kan vi give filemode-parameteren værdien "w", som står for skrivning, og den sletter tidligere data i filen og skriver de nye. Se følgende eksempel for en demo.

import logning logning.basicConfig (niveau = logning.INFO, filnavn = "mylog.log ", filemode =" w ") logning.kritisk ("Dette er en kritisk besked") logning.fejl ("Dette er en fejlmeddelelse") logning.advarselslogning ("Dette er en advarselsmeddelelse").logning af info ("Dette er en infomeddelelse").debug ("Dette er en fejlretningsmeddelelse")

Når du kører ovenstående kode, bemærker du muligvis, at de tidligere logfiler, der findes i filen, er blevet fjernet fra filen, og de nye logfiler er tilføjet. Hver gang vi kører koden, tilføjes de nye logfiler, og den forrige slettes, hvilket er nyttigt, når vi ikke har brug for posterne til videre brug.

Formatering af logfiler

Vi har set outputloggene have standardlayoutet, men vi kan ændre formatet ved at indstille formatparameteren til basicConfig () -funktionen. Lad os se en praktisk demo for at vide, hvordan vi kan bruge formatparameteren i basicConfig () -funktionen til at ændre logformatet.

import logning logning.basicConfig (niveau = logning.INFO, format = "% (filnavn) s:% (niveaunavn) s:% (besked) s") logning.kritisk ("Dette er en kritisk besked") logning.fejl ("Dette er en fejlmeddelelse") logning.advarselslogning ("Dette er en advarselsmeddelelse").logning af info ("Dette er en infomeddelelse").debug ("Dette er en fejlretningsmeddelelse")

Outputtet af ovenstående kode er som vist i nedenstående billede.

Som du kan se i output, er filnavnet også vist. Vi kan bruge formatparameteren til at angive, at mange andre formater kan diskutere nogle af dem.

% (asctime) s: Dette bruges til at vise den menneskelæsbare tid i logfilerne. For at se, hvordan det viser tid, skal du køre følgende kode i Python IDE.

import logning logning.basicConfig (niveau = logning.INFO, format = "% (asctime) s:% (besked) s") logning.advarsel ("Dette er en advarselsmeddelelse")

Når du kører koden, kan du muligvis se output, som vist i nedenstående billede.

% (oprettet) f: Dette viser det tidspunkt, hvor loggen oprettes.

% (filnavn) s: Dette bruges til at vise navnet på filen i logmeddelelsen. For at se, hvordan det fungerer, skal du bare køre følgende eksempelkode i din Python IDE.

import logning logning.basicConfig (niveau = logning.INFO, format = "% (asctime) s:% (filnavn) s:% (besked) s") logning.advarsel ("Dette er en advarselsmeddelelse")

Det output, som koden giver, vises i det følgende billede. I output er filens navn vist. Dette er nyttigt, når du arbejder på et projekt, der involverer flere filer, så vi hurtigt kan få den fil, der har fejlen.

% (niveaunavn) s: Dette bruges til at vise navnet på det anvendte niveau som ADVARSEL, AFBRUG osv.

% (niveaunr) s: Dette bruges til at udskrive den numeriske værdi af det niveau, som meddelelsen er en del af.

% (lineno) d: Dette bruges til at udskrive linjenummeret på den aktuelle linje, som viser meddelelsen. Dette er meget nyttigt, da det giver os linjenummeret, hvor vi skal se for en fejl, så det hjælper fejlretningsprocessen. Lad os se et eksempel på en kode for at se, hvordan man bruger denne til at danne output af logfiler.

import logging Format = '% (asctime) s:% (filnavn) s:% (lineno) d:% (besked) s' logning.basicConfig (niveau = logning.INFO, format = Format) logning.advarsel ("Dette er en advarselsmeddelelse")

Denne kode udskriver også linjenummeret som vist i nedenstående billede.

%(Beskeder: Det bruges til at vise den besked, som vi har logget.

% (stienavn) s: Dette bruges til at vise kildekodefilens fulde stienavn.

% (proces) d: Dette viser proces-id, hvis det er tilgængeligt.

% (procesnavn) s: Dette viser procesnavnet, hvis det er tilgængeligt.

% (tråd) d: Dette viser tråd-id'et, hvis det er tilgængeligt.

% (threadName) s: Dette viser trådnavnet, hvis det er tilgængeligt.

Logning af variable data

Vi har selv givet meddelelserne i logfilerne, som er statiske data. I de virkelige applikationer er de data, vi loggede, stadig mest dynamiske oplysninger fra vores applikation. For at gøre dette skal vi output variablerne med meddelelsesloggen. Vi kan gøre dette på mange måder. For eksempel kan vi inkludere variablerne og formatere strengen med pladsholdere og derefter videregive dem til meddelelsesloggen, så værdierne af variablerne udføres i posterne.

Se f.eks. Nedenstående kode; du kan kopiere koden og køre i din python IDE.

import logging var_message = "intern fejl" logføring.advarsel ("Serveren er stoppet på grund af% s", var_message)

Når du kører koden, vil du se output, som vist i nedenstående billede. Som du kan se på billedet, at værdien, der er gemt i variablen, også er trykt på skærmen.

Vi kan også vise variabler i logfiler ved hjælp af f-strengene, som introduceres i python 3.6. Men for at bruge f-strengene skal du bruge python 3.6 eller derover installeret i dit system. Du kan kontrollere, hvilken pythonversion der er installeret i dit system ved at køre følgende kommando i terminalen.

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

Dette udskriver den version af python, du bruger i dit system. Det er en god praksis at bruge den nyeste version af python for at få bedre ydeevne; du kan se vores guide til opdatering af din python-version i Linux.

For at formatere strenge ved hjælp af f-strengene i python skal vi bruge følgende kodesyntaks. Du kan kopiere og køre koden i din foretrukne python IDE.

import logging var_message = "intern fejl" logning.advarsel (f "Serveren er stoppet på grund af var_message")

Når du kører koden, får du output svarende til det, vi får ved at køre ovenstående kode. Men når vi ser koden, kan vi bemærke f i begyndelsen af ​​strengen, hvilket repræsenterer, at det er en f-streng, og vi kan direkte bruge variabler i f-strenge ved at sætte dem i krøllede seler.

Logning af stakspor

Logningsmodulet kan også bruges til at registrere stakkspor. Stakspor er undtagelsesmeddelelser, der smides, når der er opstået en fejl i programmet. Vi kan fange undtagelsen ved at indstille parameteren exc_info til True, mens vi kalder på logfunktionen. Denne parameter er nyttig, da vi kan logge den komplette undtagelsesmeddelelse med vores fejlmeddelelse i en fil eller terminalskærm.

For at få en praktisk demo for at vide, hvordan vi kan lofte staksporene, skal du kopiere følgende kode til din python IDE og køre.

import logning prøve: a = 1/0 undtagen Undtagelse som e: logning.fejl ("Der er opstået en fejl", exc_info = Sand)

Ved kørsel af koden logges undtagelsen i terminalen. Du vil se output af koden, som vist i nedenstående billede. Du kan også logge undtagelsen ind i en fil ved hjælp af filnavnparameteren i basicConfig () -metoden, som vi diskuterede ovenfor.

Denne metode er også kritisk til at opbygge den omfattende applikation, da vi kan have undtagelseshåndtering med logning, hvilket er fremragende til fejlfindingsprocessen.

Loggerobjekter

Loggningsmodulet indeholder også nogle nyttige klasser, der kan bruges til bedre logning, hovedsageligt til en bredere applikation. Lad os se nogle af de mest anvendte klasser i loggningsmodulet, og hvad og hvordan de fungerer.

Hvis du vil have komplette detaljer om, hvordan du bruger disse klasser, kan du henvise til den officielle dokumentation for python-logningsmodulet.

Konklusion

I denne artikel har vi lært det grundlæggende i at logge på python. Logningsmodulet er en ligetil og kraftfuld måde at logge på python på. Antag at du ikke laver logning indtil nu, i dag er dagen for at komme i gang med logning, da du læste artiklen og lærte, hvor let det er at bruge logning i python. Du kan nu bruge logning i både små og vigtige applikationer.

Hvis du logger korrekt, vil det virkelig være nyttigt på en eller anden måde. Jeg råder dig til at begynde at bruge det fra små programmer, da det vil hjælpe dig med at få et godt kendskab til de to ting og vil være uvurderlig for store projekter. Det kan også være en god idé at se, hvordan man arbejder med SQLite-databaser i python. 

Mus Efterlig museklik ved at svæve ved hjælp af Clickless Mouse i Windows 10
Efterlig museklik ved at svæve ved hjælp af Clickless Mouse i Windows 10
Brug af en mus eller et tastatur i den forkerte kropsholdning af overdreven brug kan resultere i mange sundhedsmæssige problemer, herunder stamme, kar...
Mus Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
I de senere år har computere og operativsystemer udviklet sig meget. Der var et tidspunkt, hvor brugerne skulle bruge kommandoer til at navigere genne...
Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...