Programmering

Logga in Python - din one stop guide

Logga in Python - din one stop guide

Loggning är ett viktigt steg som ska genomföras av en programmerare under programvaruutveckling. Det hjälper utvecklare att spåra händelser som händer under genomförandet av ett program, vilket kan vara till hjälp för den framtida felsökningen. Om du är nyinlärare eller arbetar på ett nytt projekt är det bra att använda loggning för att spåra kodflödet och för att lösa fel.

När vi skriver korta program ignorerar de flesta av oss vanligtvis loggning, men när programmet blir komplext är det ett viktigt och användbart steg att använda loggning för att åtgärda felen som hindrar programvaran från att fungera smidigt. Loggning är inget annat än att skriva händelserna i programvaran till en loggfil eller mata ut i terminalen.

Loggning används inte bara för felsökning. Det är också en bra process för att samla in information, samla in användningsdata och många andra användbara uppgifter. Det är också en av de vanligaste funktionerna för webbutvecklare att inte bara upptäcka fel utan också att samla in användardata som IP-adresser, som kan användas för ytterligare affärsanalys.

I Python tillhandahålls de flesta loggningsanläggningar av skogsavverkning modul som presenteras i pythons standardbibliotek, så vi behöver inte göra någon extra konfiguration. Låt oss se hur man använder den för att logga in på python. Innan du följer denna handledning är det nödvändigt att ha den senaste versionen av python installerad i ditt system. Om du inte har den senaste pythonen installerad i ditt system kan du följa vår steg-för-steg-guide för installation och uppdatering av python på Linux.

Python Logging Module

Pythons loggningsmodul är ett av de mest använda loggningsbiblioteken i python. Det bästa är att det kommer förinstallerat med pythons standardbibliotek, så vi behöver inte göra någon konfiguration eller installation. Loggningsmodulen är robust och enkel, vilket innebär att den är användbar för både nybörjare och företag. För att använda loggningsmodulen i python måste vi importera den till vårt program som jag gör i följande kodrad.

importloggning

Låt oss nu se en demo av hur vi kan logga in några meddelanden till terminalen. Kopiera bara följande kod till din favorit python IDE och kör.

importera loggningsloggning.varning ("Detta är en varning")

När vi kör ovanstående kod får vi utdata som visas i bilden nedan.

Som framgår av utskriften skriver programmet ut ett varningsmeddelande. Loggningsmodulen har också några andra nivåer av loggning som info, fel osv., vilket gör vår uppgift enkel. Låt oss diskutera dem i korthet med exempel.

Python-loggningsnivåer

Många nivåer av loggning kan användas för att logga olika meddelanden på allvarlighetsnivå. Nivåerna som tillhandahålls av pythonen skogsavverkning modulen är

Dessa nivåer visas i minskande ordning av deras svårighetsgrad. Låt oss se hur vi använder dessa nivåer i vårt program. Kopiera bara följande kod och kör i Python IDE.

importera loggningsloggning.kritisk ("Detta är ett kritiskt meddelande") loggning.fel ("Detta är ett felmeddelande") loggning.varningslogg ("Detta är ett varningsmeddelande").loggning av info ("Detta är ett infomeddelande").felsöka ("Detta är ett felsökningsmeddelande")

När du kör ovanstående kod i IDE visas utgången som terminalen visar i bilden nedan.

Som du kan se i utgången skrivs DEBUG- och INFO-meddelandena inte ut i terminalen eftersom loggningsmodulen som standard endast loggade meddelandena med säkerhetsnivå som är högre än eller lika med varningen. För att visa INFO och DEBUG i terminalen måste vi ändra loggerns grundkonfiguration manuellt. För att göra det kan vi använda basicConfig (**kwargs) -metoden som tillhandahålls av loggningsmodulen. För att se en enkel konfigurationsdemo, kör bara följande kod i din Python IDE.

importera loggningsloggning.basicConfig (nivå = loggning.Felsökningsloggning.kritisk ("Detta är ett kritiskt meddelande") loggning.fel ("Detta är ett felmeddelande") loggning.varning ("Detta är ett varningsmeddelande") loggning.loggning av info ("Detta är ett informationsmeddelande").felsöka ("Detta är ett felsökningsmeddelande")

I ovanstående kod har vi ställt in nivån på skogsavverkning.DEBUG, vilket innebär att alla nivåer som ligger över felsökningsnivån loggas. Således i ovanstående kod loggas alla meddelanden som visas i bilden nedan.

Låt oss diskutera mer metoden basicConfig () för loggningsmodulen.

Grundläggande konfigurationer

Loggningsmodulen ger en mycket användbar metod basicConfig (** Kwargs), som används för att ställa in konfigurationer för loggningsdata. Några av de vanliga parametrarna för basicConfig () -funktionen är:

Låt oss se hur vi kan använda dessa konfigurationer i pythons loggningsmodul genom att utforska exemplet på en efter en.

Nivåparametern används för att ställa in allvarlighetsnivån, för att se en praktisk demonstration av hur man använder den, kopiera nedanstående kod i python IDE och kör.

importera loggningsloggning.basicConfig (nivå = loggning.INFO) loggning.kritisk ("Detta är ett kritiskt meddelande") loggning.fel ("Detta är ett felmeddelande") loggning.varningslogg ("Detta är ett varningsmeddelande").loggning av info ("Detta är ett infomeddelande").felsöka ("Detta är ett felsökningsmeddelande")

När du kör koden kan du se utdata, som visas i bilden nedan. Som du kan se att meddelandena som ligger över informationsnivåerna skrivs ut, men meddelandet på felsökningsnivån skrivs inte ut.

Nivåparametern är en användbar konfiguration som bör göras så att loggfilerna inte var för stora genom att de innehåller onödiga data och bara har den information som krävs.

Logga in i en fil

Vi har bara sett hur man loggar in på terminalen, men det är inte alltid bra att logga in på terminalen eftersom vi inte kan spara den för senare användning. För en bättre lösning kan vi skriva ut loggarna i en textfil som vi sparar och analyserar senare. Loggarna är text och kan förvaras i en textfil i vilket format som helst, men allmänt antas det att spara loggarna i en fil med .loggförlängning. Dessa filer kallas loggfiler och används universellt för att lagra programloggar, webbapplikationer och annan programvara.

Vi kan spara loggar till en fil genom att konfigurera loggningsmodulen med hjälp av basicConfig () -funktionen. Vi måste ange namnet på filen där vi vill spara loggarna i filnamnsparametern för basicConfig () -funktionen, varefter posterna skrivs ut automatiskt i den loggfil som vi anger. Låt oss se ett praktiskt exempel för att veta hur det fungerar.

importera loggningsloggning.basicConfig (nivå = loggning.INFO, filnamn = "mylog.logg ") loggning.kritisk ("Detta är ett kritiskt meddelande") loggning.fel ("Detta är ett felmeddelande") loggning.varningslogg ("Detta är ett varningsmeddelande").loggning av info ("Detta är ett informationsmeddelande").felsöka ("Detta är ett felsökningsmeddelande")

När du kör koden kan du se att en ny fil har skapats i det aktuella arbetskatalognamnet mylog.logga. När du öppnar filen med en textredigerare kanske du märker att loggarna sparades i filen.

Om vi ​​kör om koden ser vi att loggen läggs till i filen. Vi kan ändra detta genom att ange filemode-parametern i funktionen basiconfig (). Som standard har filmode-parametern värdet “a”, som står för append. Men ibland vill vi också ta bort tidigare loggade data och bara skriva de nya loggarna i filen. För att göra detta kan vi ge filemode-parametern värdet "w", vilket står för skriv, och det raderar tidigare data i filen och skriver de nya. För en demo, se följande exempel.

importera loggningsloggning.basicConfig (nivå = loggning.INFO, filnamn = "mylog.log ", filemode =" w ") loggning.kritisk ("Detta är ett kritiskt meddelande") loggning.fel ("Detta är ett felmeddelande") loggning.varning ("Detta är ett varningsmeddelande") loggning.loggning av info ("Detta är ett infomeddelande").felsöka ("Detta är ett felsökningsmeddelande")

När du kör ovanstående kod kanske du märker att de tidigare loggarna i filen har tagits bort från filen och de nya loggarna har lagts till. Varje gång vi kör koden läggs de nya loggarna till och den tidigare raderas, vilket är användbart när vi inte behöver posterna för vidare användning.

Formatera loggarna

Vi har sett att utgångsloggarna har standardlayouten, men vi kan ändra formatet genom att ställa in formatparametern för basicConfig () -funktionen. Låt oss se en praktisk demo för att veta hur vi kan använda formatparametern i funktionen basicConfig () för att ändra loggformatet.

importera loggningsloggning.basicConfig (nivå = loggning.INFO, format = "% (filnamn) s:% (nivånamn) s:% (meddelande) s") loggning.kritisk ("Detta är ett kritiskt meddelande") loggning.fel ("Detta är ett felmeddelande") loggning.varningslogg ("Detta är ett varningsmeddelande").loggning av info ("Detta är ett informationsmeddelande").felsöka ("Detta är ett felsökningsmeddelande")

Utgången från ovanstående kod är som visas i bilden nedan.

Som du kan se i utdata har filnamnet också visats. Vi kan använda formatparametern för att indikera att många andra format kan diskutera några av dem.

% (asctime) s: Detta används för att visa den mänskliga läsbara tiden i loggarna. För att se hur det visar tid, kör följande kod i Python IDE.

importera loggningsloggning.basicConfig (nivå = loggning.INFO, format = "% (asctime) s:% (meddelande) s") loggning.varning ("Detta är ett varningsmeddelande")

När du kör koden kan du se utdata, som visas i bilden nedan.

% (skapad) f: Detta visar tiden då loggen skapas.

% (filnamn) s: Detta används för att visa filnamnet i loggmeddelandet. För att se hur det fungerar, kör bara följande exempelkod i din Python IDE.

importera loggningsloggning.basicConfig (nivå = loggning.INFO, format = "% (asctime) s:% (filnamn) s:% (meddelande) s") loggning.varning ("Detta är ett varningsmeddelande")

Utgången som koden ger visas i följande bild. I utgången har namnet på filen visats. Detta är användbart när vi arbetar med ett projekt som involverar flera filer så att vi snabbt kan få filen som har felet.

% (nivånamn) s: Detta används för att visa namnet på den nivå som används som VARNING, AVBROKNING etc.

% (nivånr) s: Detta används för att skriva ut det numeriska värdet på den nivå som meddelandet är en del av.

% (lineno) d: Detta används för att skriva ut radnumret för den aktuella raden, som visar meddelandet. Detta är mycket användbart eftersom det ger oss radnumret där vi måste se för ett fel, så det hjälper felsökningen. Låt oss se en exempelkod för att se hur man använder den här för att bilda utdata från loggar.

importera loggning Format = '% (asctime) s:% (filnamn) s:% (lineno) d:% (meddelande) s' loggning.basicConfig (nivå = loggning.INFO, format = Format) loggning.varning ("Detta är ett varningsmeddelande")

Den här koden kommer också att skriva ut rad nr, som visas i bilden nedan.

% (meddelande) s: Den används för att visa meddelandet som vi har loggat.

% (sökväg) s: Detta används för att visa hela sökvägen för källkodsfilen.

% (process) d: Detta kommer att visa process-ID om tillgängligt.

% (processnamn) s: Detta visar processnamnet om tillgängligt.

% (tråd) d: Detta visar tråd-id om det är tillgängligt.

% (threadName) s: Detta visar trådnamnet om tillgängligt.

Logga variabla data

Vi har själv gett meddelandena i loggarna, vilka är statiska data. Fortfarande, i verkliga applikationer kommer de data vi loggade mestadels att vara dynamisk information från vår applikation. För att göra detta måste vi mata ut variablerna med meddelandeloggen. Vi kan göra detta på många sätt. Vi kan till exempel inkludera variablerna och formatera strängen med platshållare och sedan skicka dem till meddelandeloggen så att värdena för variablerna matas ut i posterna.

Se till exempel nedanstående kod; Du kan kopiera koden och köra i din python IDE.

import logging var_message = "internt fel" loggning.varning ("Servern har stoppats på grund av% ​​s", var_message)

När du kör koden ser du utdata, som visas i bilden nedan. Som du kan se på bilden att värdet som lagras i variabeln också skrivs ut på skärmen.

Vi kan också visa variabler i loggar med hjälp av f-strängarna, som introduceras i python 3.6. Men för att använda f-strängarna behöver du python 3.6 eller högre installerade i ditt system. Du kan kontrollera vilken pythonversion som är installerad i ditt system genom att köra följande kommando i terminalen.

python --version # för python 2 på Linux python3 --version # för python 3 i Linux

Detta kommer att skriva ut den version av python du använder i ditt system. Det är bra att använda den senaste versionen av python för att få bättre prestanda; du kan se vår guide för att uppdatera din pythonversion i Linux.

För att formatera strängar med hjälp av f-strängarna i python måste vi använda följande kodsyntax. Du kan kopiera och köra koden i din favorit python IDE.

import logging var_message = "internt fel" loggning.varning (f "Servern har stoppats på grund av var_message")

När du kör koden får du utdata som liknar den som vi får när du kör ovanstående kod. Men när vi ser koden kan vi märka f i början av strängen, vilket representerar att det är en f-sträng, och vi kan direkt använda variabler i f-strängar genom att placera dem i lockiga hakparenteser.

Logga stackspår

Loggningsmodulen kan också användas för att fånga stackspår. Stackspår är undantagsmeddelanden som kastas när ett fel har inträffat i programmet. Vi kan fånga undantaget genom att ställa in parametern exc_info till True medan vi anropar loggningsfunktionen. Denna parameter är användbar eftersom vi kan logga hela undantagsmeddelandet med vårt felmeddelande i en fil eller terminalskärm.

För att få en praktisk demo för att veta hur vi kan skapa stackspår, kopiera följande kod till din python IDE och kör.

importloggningsförsök: a = 1/0 utom undantag som e: loggning.error ("Ett fel har inträffat", exc_info = True)

När du kör koden loggas undantaget i terminalen. Du ser kodens utdata, som visas i bilden nedan. Du kan också logga undantaget i en fil med filnamnsparametern i basicConfig () -metoden, som vi diskuterade ovan.

Denna metod är också avgörande för att bygga den omfattande applikationen eftersom vi kan ha undantagshantering med loggning, vilket är utmärkt för felsökningsprocessen.

Loggerobjekt

Loggningsmodulen innehåller också några användbara klasser som kan användas för bättre loggning, främst för en bredare applikation. Låt oss se några av de mest använda klasserna i loggningsmodulen och vad och hur de fungerar.

Om du vill ha fullständig information om hur du använder dessa klasser kan du hänvisa till den officiella dokumentationen för python-loggningsmodulen.

Slutsats

I den här artikeln har vi lärt oss grunderna i att logga in python. Loggningsmodulen är ett enkelt och kraftfullt sätt att logga in i python. Antag att du inte loggar tills nu, idag är dagen för att komma igång med loggning när du läser artikeln och lärde dig hur lätt det är att använda loggning i python. Du kan nu använda inloggning i både små och betydande applikationer.

Om du loggar korrekt kommer det verkligen att vara till hjälp på ett eller annat sätt. Jag råder dig att börja använda den från små program eftersom det hjälper dig att få en god kunskap om saken eller två och kommer att vara ovärderlig för stora projekt. Du kanske också vill se hur du arbetar med SQLite-databaser i python. 

Installera det senaste OpenRA-strategispelet på Ubuntu Linux
OpenRA är en Libre / Free Real Time Strategy-spelmotor som återskapar de tidiga Westwood-spelen som det klassiska Command & Conquer: Red Alert. Distri...
Installera senaste Dolphin Emulator för Gamecube & Wii på Linux
Dolphin Emulator låter dig spela dina valda Gamecube & Wii-spel på Linux Personal Computers (PC). Eftersom Dolphin Emulator är en fritt tillgänglig o...
Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...