Programmeren

Inloggen in Python - Uw one-stop-gids

Inloggen in Python - Uw one-stop-gids

Loggen is een cruciale stap die een programmeur moet uitvoeren tijdens softwareontwikkeling. Het helpt ontwikkelaars om gebeurtenissen te volgen die plaatsvinden tijdens de uitvoering van een programma, wat handig kan zijn voor het toekomstige foutopsporingsproces. Als u een nieuwe leerling bent of aan een nieuw project werkt, is het een goede gewoonte om logboekregistratie te gebruiken voor het volgen van de codestroom en voor het oplossen van fouten.

Bij het schrijven van korte programma's negeren de meesten van ons logboekregistratie, maar wanneer het programma complex wordt, is het een essentiële en nuttige stap om logboekregistratie te gebruiken om de fouten op te lossen die ervoor zorgen dat de software niet soepel werkt. Loggen is niets meer dan de gebeurtenissen in de software in een logbestand schrijven of in de terminal uitvoeren.

Logging wordt niet alleen gebruikt voor debuggen. Het is ook een handig proces voor het verzamelen van informatie, het verzamelen van gebruiksgegevens en vele andere nuttige taken. Het is ook een van de meest gebruikelijke functies voor webontwikkelaars, niet alleen om fouten te detecteren, maar ook om gebruikersgegevens te verzamelen, zoals IP-adressen, die kunnen worden gebruikt voor verdere bedrijfsanalyses.

In Python worden de meeste logfaciliteiten geleverd door de loggen module gepresenteerd in de standaardbibliotheek van python, dus we hoeven geen extra configuratie te doen. Laten we eens kijken hoe we het kunnen gebruiken om in te loggen in python. Voordat u deze tutorial volgt, moet de nieuwste versie van python op uw systeem zijn geïnstalleerd. Als je de nieuwste python niet op je systeem hebt geïnstalleerd, kun je onze stapsgewijze handleiding volgen over het installeren en updaten van python op Linux.

De Python-logboekmodule

De logmodule van de Python is een van de meest gebruikte logbibliotheken in Python. Het beste is dat het vooraf is geïnstalleerd met de standaardbibliotheek van Python, dus we hoeven geen configuratie of installatie uit te voeren. De logboekmodule is robuust en eenvoudig, wat betekent dat het nuttig is voor zowel beginners als ondernemingen. Om de logboekmodule in python te gebruiken, moeten we deze in ons programma importeren, zoals ik doe in de volgende regel code.

logboekregistratie importeren

Laten we nu een demo zien van hoe we sommige berichten in de terminal kunnen loggen. Kopieer gewoon de volgende code naar je favoriete python IDE en voer uit.

logboekregistratie importeren.waarschuwing ("Dit is een waarschuwing")

Bij het uitvoeren van de bovenstaande code krijgen we de uitvoer zoals weergegeven in de onderstaande afbeelding:.

Zoals te zien is in de uitvoer, drukt het programma een waarschuwingsbericht af. De logboekmodule heeft ook enkele andere niveaus van logboekregistratie, zoals: info, fout, enz., die onze taak gemakkelijk maken. Laten we ze in het kort bespreken met voorbeelden.

Python-logniveaus

Er kunnen veel logboekniveaus worden gebruikt om verschillende berichten op het niveau van ernst te loggen. De niveaus die worden geleverd door de python loggen module zijn

Deze niveaus worden weergegeven in afnemende volgorde van ernst. Laten we eens kijken hoe we deze niveaus in ons programma kunnen gebruiken. Kopieer gewoon de volgende code en voer deze uit in de Python IDE.

logboekregistratie importeren.kritisch ("Dit is een kritisch bericht") logging.error("Dit is een foutmelding") loggen.waarschuwing ("Dit is een waarschuwingsbericht") loggen.info("Dit is een infobericht") logging.debug("Dit is een foutopsporingsbericht")

Bij het uitvoeren van de bovenstaande code in de IDE, wordt de uitvoer die de terminal toont, weergegeven in de onderstaande afbeelding:.

Zoals u in de uitvoer kunt zien, worden de DEBUG- en INFO-berichten niet afgedrukt in de terminal omdat de logboekmodule standaard alleen de berichten met een beveiligingsniveau hoger dan of gelijk aan de waarschuwing heeft vastgelegd. Om INFO en DEBUG in de terminal weer te geven, moeten we de basisconfiguratie van de logger handmatig wijzigen. Om dit te doen, kunnen we de basicConfig(**kwargs) methode geleverd door de logboekmodule. Om een ​​eenvoudige demo van de configuratie te zien, voert u gewoon de volgende code uit in uw Python IDE:.

logboekregistratie importeren.basicConfig (niveau = logboekregistratie).DEBUG) loggen.kritisch ("Dit is een kritisch bericht") logboekregistratie.error("Dit is een foutmelding") loggen.waarschuwing ("Dit is een waarschuwingsbericht") loggen.info("Dit is een infobericht") logging.debug("Dit is een foutopsporingsbericht")

In de bovenstaande code hebben we het niveau van ingesteld loggen.DEBUG, wat betekent dat alle niveaus die boven het debug-niveau liggen, worden gelogd. Dus in de bovenstaande code worden alle berichten vastgelegd zoals weergegeven in de onderstaande afbeelding:.

Laten we het hebben over de basicConfig() methode van de logging module.

Basisconfiguraties

De logmodule biedt een zeer nuttige methode basicConfig(**Kwargs), die wordt gebruikt voor het instellen van configuraties voor het loggen van gegevens. Enkele veelgebruikte parameters van de functie basicConfig() zijn:

Laten we eens kijken hoe we deze configuraties kunnen gebruiken in de logmodule van de Python door het voorbeeld van één na één te verkennen.

De parameter level wordt gebruikt om het niveau van ernst in te stellen, om een ​​praktische demo te zien van hoe het te gebruiken, kopieer de onderstaande code in de python IDE en voer het uit.

logboekregistratie importeren.basicConfig (niveau = logboekregistratie).INFO) loggen.kritisch ("Dit is een kritisch bericht") logboekregistratie.error("Dit is een foutmelding") loggen.waarschuwing ("Dit is een waarschuwingsbericht") loggen.info("Dit is een infobericht") logging.debug("Dit is een foutopsporingsbericht")

Bij het uitvoeren van de code ziet u mogelijk de uitvoer, zoals weergegeven in de onderstaande afbeelding:. Zoals u kunt zien, worden de berichten die zich boven de infoniveaus bevinden afgedrukt, maar het bericht op het foutopsporingsniveau wordt niet afgedrukt.

De parameter level is een nuttige configuratie die moet worden uitgevoerd zodat de logbestanden niet te groot zijn door onnodige gegevens te bevatten en alleen de vereiste informatie bevatten.

Inloggen op een bestand

We hebben alleen gezien hoe in te loggen op de terminal, maar inloggen op de terminal is niet altijd handig omdat we het niet kunnen opslaan voor later gebruik. Voor een betere oplossing kunnen we de logs afdrukken in een tekstbestand dat we opslaan en later analyseren analyze. De logboeken zijn tekst en kunnen worden bewaard in een tekstbestand van elk formaat, maar universeel wordt aangenomen om de logboeken op te slaan in een bestand met de .log extensie. Deze bestanden staan ​​bekend als logbestanden en worden universeel gebruikt voor het opslaan van logbestanden van programma's, webapplicaties en andere software.

We kunnen logs opslaan in een bestand door de configuratie van de logmodule in te stellen met behulp van de basicConfig()-functie. We moeten de naam van het bestand waarin we de logs willen opslaan, opgeven in de parameter filename van de functie basicConfig(), waarna de records automatisch worden afgedrukt in het logbestand dat we specificeren. Laten we een praktisch voorbeeld zien om te zien hoe het werkt.

logboekregistratie importeren.basicConfig (niveau = logboekregistratie).INFO, bestandsnaam = "mijnlog".log") loggen.kritisch ("Dit is een kritisch bericht") logboekregistratie.error("Dit is een foutmelding") loggen.waarschuwing ("Dit is een waarschuwingsbericht") loggen.info("Dit is een infobericht") logging.debug("Dit is een foutopsporingsbericht")

Als u de code uitvoert, kunt u zien dat er een nieuw bestand is gemaakt in de huidige naam van de werkmap mijnlog.log. Bij het openen van het bestand met een teksteditor, merkt u misschien dat de logboeken in het bestand zijn opgeslagen.

Als we de code opnieuw uitvoeren, zullen we zien dat het logboek aan het bestand wordt toegevoegd. We kunnen dit veranderen door de parameter filemode op te geven in de functie basiconfig(). Standaard heeft de parameter filemode de waarde "a", wat staat voor append. Maar soms willen we ook de eerder gelogde gegevens verwijderen en de nieuwe logs alleen in het bestand schrijven. Om dit te doen, kunnen we de parameter filemode de waarde "w" geven, wat staat voor schrijven, en het verwijdert alle eerdere gegevens in het bestand en schrijft de nieuwe. Zie het volgende voorbeeld voor een demo:.

logboekregistratie importeren.basicConfig (niveau = logboekregistratie).INFO, bestandsnaam = "mijnlog".log", filemode="w") logboekregistratie.kritisch ("Dit is een kritisch bericht") logboekregistratie.error("Dit is een foutmelding") loggen.waarschuwing ("Dit is een waarschuwingsbericht") loggen.info("Dit is een infobericht") logging.debug("Dit is een foutopsporingsbericht")

Als u de bovenstaande code uitvoert, merkt u mogelijk dat de eerdere logboeken in het bestand uit het bestand zijn verwijderd en dat de nieuwe logboeken zijn toegevoegd. Elke keer dat we de code uitvoeren, worden de nieuwe logs toegevoegd en de vorige verwijderd, wat handig is als we de records niet nodig hebben voor verder gebruik.

De logboeken opmaken

We hebben gezien dat de uitvoerlogboeken de standaardlay-out hebben, maar we kunnen het formaat wijzigen door de formaatparameter van de functie basicConfig() in te stellen. Laten we een praktische demo bekijken om te zien hoe we de format-parameter in de basicConfig()-functie kunnen gebruiken om het formaat van het logboek te wijzigen.

logboekregistratie importeren.basicConfig (niveau = logboekregistratie).INFO, format="%(filename)s: %(levelname)s: %(message)s") logboekregistratie.kritisch ("Dit is een kritisch bericht") logboekregistratie.error("Dit is een foutmelding") loggen.waarschuwing ("Dit is een waarschuwingsbericht") loggen.info("Dit is een infobericht") logging.debug("Dit is een foutopsporingsbericht")

De uitvoer van de bovenstaande code is zoals weergegeven in de onderstaande afbeelding:.

Zoals je kunt zien in de uitvoer, is de bestandsnaam ook weergegeven. We kunnen de format-parameter gebruiken om veel andere formaten aan te geven, laten we er enkele bespreken.

%(stijgtijd)s: Dit wordt gebruikt om de door mensen leesbare tijd in de logs weer te geven. Om te zien hoe de tijd wordt weergegeven, voert u de volgende code uit in de Python IDE:.

logboekregistratie importeren.basicConfig (niveau = logboekregistratie).INFO, format="%(asctime)s: %(message)s") logboekregistratie.waarschuwing("Dit is een waarschuwingsbericht")

Bij het uitvoeren van de code ziet u mogelijk de uitvoer, zoals weergegeven in de onderstaande afbeelding:.

%(gemaakt)f: Dit zal de tijd weergeven waarin het logboek is gemaakt.

%(bestandsnaam)s: Dit wordt gebruikt om de naam van het bestand in het logbericht weer te geven. Om te zien hoe het werkt, voert u gewoon de volgende voorbeeldcode uit in uw Python IDE.

logboekregistratie importeren.basicConfig (niveau = logboekregistratie).INFO, format="%(asctime)s: %(filename)s: %(message)s") logboekregistratie.waarschuwing("Dit is een waarschuwingsbericht")

De uitvoer die de code biedt, wordt weergegeven in de volgende afbeelding:. In de uitvoer is de naam van het bestand weergegeven. Dit is handig tijdens het werken aan een project waarbij meerdere bestanden zijn betrokken, zodat we het bestand met de fout snel kunnen krijgen.

%(niveaunaam)s: Dit wordt gebruikt om de naam van het gebruikte niveau weer te geven, zoals WAARSCHUWING, DEBUG, enz.

%(niveaunummer)s: Dit wordt gebruikt om de numerieke waarde af te drukken van het niveau waar het bericht deel van uitmaakt.

%(lineno)d: Dit wordt gebruikt om het regelnummer van de huidige regel af te drukken, die het bericht weergeeft. Dit is erg handig omdat het ons het regelnummer geeft waar we een fout moeten zien, dus het helpt het foutopsporingsproces. Laten we een voorbeeldcode bekijken om te zien hoe deze te gebruiken om de uitvoer van logs te vormen.

import loggen Formaat = '%(asctime)s: %(filename)s:%(lineno)d: %(message)s' loggen.basicConfig (niveau = logboekregistratie).INFO, formaat = formaat) loggen.waarschuwing("Dit is een waarschuwingsbericht")

Deze code drukt ook het regelnummer af, zoals weergegeven in de onderstaande afbeelding:.

%(bericht)s: Het wordt gebruikt om het bericht weer te geven dat we hebben geregistreerd.

%(padnaam)s: Dit wordt gebruikt om de volledige padnaam van het broncodebestand weer te geven.

%(proces)d: Dit zal de proces-ID weergeven, indien beschikbaar.

%(procesnaam)s: Dit zal de procesnaam weergeven indien beschikbaar.

%(thread)d: Dit zal de Thread-ID weergeven, indien beschikbaar.

%(threadName)s: Dit zal de draadnaam weergeven, indien beschikbaar.

Variabele gegevens loggen

We hebben de berichten in de logs zelf gegeven, dit zijn statische gegevens. Toch zullen in real-world applicaties de gegevens die we hebben geregistreerd voornamelijk dynamische informatie van onze applicatie zijn. Om dit te doen, moeten we de variabelen uitvoeren met het berichtenlogboek. We kunnen dit op vele manieren doen. We kunnen bijvoorbeeld de variabelen opnemen en de tekenreeks opmaken met tijdelijke aanduidingen en deze vervolgens doorgeven aan het berichtenlogboek, zodat de waarden van de variabelen in de records worden uitgevoerd.

Zie bijvoorbeeld de onderstaande code; je kunt de code kopiëren en uitvoeren in je python IDE.

import loggen var_message = "interne fout" loggen.warning("De server is gestopt vanwege %s", var_message)

Bij het uitvoeren van de code ziet u de uitvoer, zoals weergegeven in de onderstaande afbeelding:. Zoals u op de afbeelding kunt zien, wordt de waarde die is opgeslagen in de variabele ook op het scherm afgedrukt.

We kunnen ook variabelen in logs weergeven met behulp van de f-strings, die zijn geïntroduceerd in python 3.6. Maar om de f-snaren te gebruiken, heb je python 3 . nodig.6 of hoger geïnstalleerd in uw systeem. U kunt controleren welke python-versie op uw systeem is geïnstalleerd door de volgende opdracht in de terminal uit te voeren:.

python --versie # voor python 2 op Linux python3 --versie # voor python 3 in Linux

Hiermee wordt de versie van python afgedrukt die u in uw systeem gebruikt. Het is een goede gewoonte om de nieuwste versie van python te gebruiken om betere prestaties te krijgen; je kunt onze gids bekijken voor het updaten van je python-versie in Linux.

Om strings op te maken met de f-strings in python, moeten we de volgende codesyntaxis gebruiken:. U kunt de code kopiëren en uitvoeren in uw favoriete python-IDE.

import logboekregistratie var_message = "interne fout" logboekregistratie.waarschuwing(f"De server is gestopt vanwege var_message")

Bij het uitvoeren van de code krijgt u de uitvoer die lijkt op de uitvoer die we krijgen bij het uitvoeren van de bovenstaande code. Maar als we de code zien, zien we de f aan het begin van de string, wat aangeeft dat het een f-string is, en we kunnen variabelen in f-strings direct gebruiken door ze tussen accolades te plaatsen.

Stapelsporen loggen

De logging-module kan ook worden gebruikt voor het vastleggen van stacktraces. Stacktraces zijn de uitzonderingsberichten die worden gegenereerd wanneer er een fout is opgetreden in het programma. We kunnen de uitzondering vastleggen door de parameter exc_info in te stellen op True tijdens het aanroepen van de logboekfunctie. Deze parameter is handig omdat we het volledige uitzonderingsbericht met ons foutbericht in een bestand of terminalscherm kunnen loggen.

Om een ​​praktische demo te krijgen om te weten hoe we de stacktraces kunnen maken, kopieert u de volgende code naar uw python-IDE en voert u deze uit.

import logging probeer: a = 1/0 behalve uitzondering als e: logging.error("Er is een fout opgetreden", exc_info=True)

Bij het uitvoeren van de code wordt de uitzondering vastgelegd in de terminal. U ziet de uitvoer van de code, zoals weergegeven in de onderstaande afbeelding:. U kunt de uitzondering ook in een bestand loggen met behulp van de parameter bestandsnaam in de methode basicConfig(), zoals we hierboven hebben besproken.

Deze methode is ook van cruciaal belang bij het bouwen van de uitgebreide applicatie, omdat we uitzonderingen kunnen afhandelen met logboekregistratie, wat uitstekend is voor het foutopsporingsproces.

Logger-objecten

De logging-module biedt ook enkele nuttige klassen die kunnen worden gebruikt voor een betere logging, voornamelijk voor een bredere toepassing. Laten we eens kijken naar enkele van de meest gebruikte klassen van de logboekmodule en wat en hoe ze werken.

Als je volledige details wilt over het gebruik van deze klassen, kun je de officiële documentatie van de python-logboekmodule raadplegen.

Conclusie

In dit artikel hebben we de basis geleerd van inloggen in python. De logboekmodule is een eenvoudige en krachtige manier om in python in te loggen. Stel dat u tot nu toe niet aan het loggen bent, vandaag is de dag om aan de slag te gaan met loggen terwijl u het artikel leest en hebt geleerd hoe gemakkelijk het is om loggen in python te gebruiken. U kunt inloggen nu gebruiken in zowel kleine als belangrijke toepassingen.

Als je correct logt, zal het inderdaad op de een of andere manier nuttig zijn. Ik raad je aan om het te gebruiken vanuit kleine programma's, omdat het je zal helpen om een ​​goede kennis van de twee dingen te krijgen en het zal van onschatbare waarde zijn voor grote projecten. Misschien wilt u ook zien hoe u met SQLite-databases in python kunt werken. 

OpenTTD-zelfstudie
OpenTTD is een van de meest populaire simulatiegames voor bedrijven die er zijn. In dit spel moet je een geweldig transportbedrijf creëren. U begint e...
SuperTuxKart voor Linux
SuperTuxKart is een geweldige titel die is ontworpen om je de Mario Kart-ervaring gratis te bieden op je Linux-systeem. Het is behoorlijk uitdagend en...
Strijd om Wesnoth Zelfstudie
The Battle for Wesnoth is een van de meest populaire open source strategiespellen die je op dit moment kunt spelen. Dit spel is niet alleen al heel la...