Programování

Přihlášení v Pythonu - váš jednotný průvodce

Přihlášení v Pythonu - váš jednotný průvodce

Protokolování je zásadním krokem, který má programátor provést během vývoje softwaru. Pomáhá vývojářům sledovat události probíhající během provádění programu, což může být užitečné pro budoucí proces ladění. Pokud jste nový student nebo pracujete na novém projektu, je dobrým zvykem používat protokolování ke sledování toku kódu a řešení chyb.

Při psaní krátkých programů většina z nás obvykle ignoruje protokolování, ale když se program stane složitým, pak je to zásadní a užitečný krok pomocí protokolování k opravě chyb, které brání hladkému chodu softwaru. Protokolování není nic jiného než zápis událostí v softwaru do souboru protokolu nebo výstup do terminálu.

Protokolování se nepoužívá pouze k ladění. Je to také užitečný proces pro shromažďování informací, shromažďování údajů o používání a mnoho dalších užitečných úkolů. Je to také jedna z nejběžnějších funkcí webových vývojářů nejen pro detekci chyb, ale také pro shromažďování uživatelských dat, jako jsou IP adresy, které lze použít pro další obchodní analýzy.

V Pythonu poskytuje většinu protokolovacích zařízení protokolování modul prezentovaný ve standardní knihovně pythonu, takže nemusíme dělat žádnou další konfiguraci. Podívejme se, jak ji použít pro přihlášení v pythonu. Před provedením tohoto kurzu je nutné mít ve vašem systému nainstalovanou nejnovější verzi pythonu. Pokud ve svém systému nemáte nainstalovaný nejnovější python, můžete postupovat podle našeho průvodce instalací a aktualizací pythonu v systému Linux.

Modul protokolování Pythonu

Pythonův modul protokolování je jednou z nejpoužívanějších knihoven protokolování v pythonu. Nejlepší na tom je, že je předinstalován se standardní knihovnou pythonu, takže nemusíme provádět žádnou konfiguraci ani instalaci. Protokolovací modul je robustní a přímočarý, což znamená, že je užitečný jak pro začátečníky, tak pro podniky. Chcete-li použít modul protokolování v pythonu, musíme jej importovat do našeho programu, jako to dělám v následujícím řádku kódu.

importovat protokolování

Nyní se podívejme na ukázku, jak můžeme některé zprávy přihlásit do terminálu. Stačí zkopírovat následující kód do svého oblíbeného IDE pythonu a spustit.

import logování logování.varování („Toto je varování“)

Při spuštění výše uvedeného kódu získáme výstup, jak je znázorněno na následujícím obrázku.

Jak je vidět na výstupu, program vytiskne varovnou zprávu. Modul protokolování má také některé další úrovně protokolování informace, chyba atd., díky nimž je náš úkol snadný. Pojďme o nich stručně diskutovat s příklady.

Úrovně protokolování Pythonu

Mnoho úrovní protokolování lze použít k protokolování různých zpráv na úrovni závažnosti. Úrovně poskytované pythonem protokolování modul jsou

Tyto úrovně jsou zobrazeny v sestupném pořadí podle jejich závažnosti. Podívejme se, jak tyto úrovně použít v našem programu. Stačí zkopírovat následující kód a spustit v IDE Pythonu.

import logování logování.kritické („Toto je kritická zpráva“) protokolování.chyba ("Toto je chybová zpráva") protokolování.upozornění („Toto je varovná zpráva“) protokolování.info ("Toto je informační zpráva") protokolování.debug („Toto je debugovací zpráva“)

Při spuštění výše uvedeného kódu v IDE je výstup, který terminál zobrazuje, zobrazen na následujícím obrázku.

Jak vidíte na výstupu, zprávy DEBUG a INFO se v terminálu nevytisknou, protože protokolovací modul ve výchozím nastavení protokoloval pouze zprávy s úrovní zabezpečení vyšší nebo rovnou varování. Chcete-li v terminálu zobrazit INFO a DEBUG, musíme ručně změnit základní konfiguraci záznamníku. K tomu můžeme použít basicConfig (**kwargs) metoda poskytovaná modulem protokolování. Chcete-li zobrazit jednoduché demo konfigurace, stačí spustit následující kód do svého IDE Pythonu.

import logování logování.basicConfig (úroveň = protokolování.DEBUG).kritické („Toto je kritická zpráva“) protokolování.chyba ("Toto je chybová zpráva") protokolování.upozornění („Toto je varovná zpráva“) protokolování.info ("Toto je informační zpráva") protokolování.debug („Toto je debugovací zpráva“)

Ve výše uvedeném kódu jsme nastavili úroveň protokolování.LADIT, což znamená, že budou zaznamenány všechny úrovně, které jsou nad úrovní ladění. Ve výše uvedeném kódu budou tedy všechny zprávy zaznamenány, jak je znázorněno na následujícím obrázku.

Pojďme si ještě promluvit o metodě basicConfig () modulu protokolování.

Základní konfigurace

Logovací modul poskytuje velmi užitečnou metodu basicConfig (** Kwargs), která se používá pro nastavení konfigurací pro protokolování dat. Některé z běžně používaných parametrů funkce basicConfig () jsou:

Podívejme se, jak můžeme tyto konfigurace použít v modulu protokolování pythonu prozkoumáním příkladu jedna za druhou.

Parametr level se používá k nastavení úrovně závažnosti, k zobrazení praktického ukázky jeho použití, zkopírování níže uvedeného kódu do IDE pythonu a spuštění.

import logování logování.basicConfig (úroveň = protokolování.INFO) protokolování.kritické („Toto je kritická zpráva“) protokolování.chyba ("Toto je chybová zpráva") protokolování.upozornění („Toto je varovná zpráva“) protokolování.info ("Toto je informační zpráva") protokolování.debug („Toto je debugovací zpráva“)

Při spuštění kódu se může zobrazit výstup, jak je znázorněno na následujícím obrázku. Jak vidíte, zprávy, které jsou nad úrovněmi informací, se vytisknou, ale zpráva na úrovni ladění se nevytiskne.

Parametr level je užitečná konfigurace, kterou je třeba provést, aby soubory protokolu nebyly příliš velké, protože obsahovaly nepotřebná data a měly pouze požadované informace.

Přihlašování do souboru

Viděli jsme pouze, jak se přihlásit k terminálu, ale přihlášení k terminálu není vždy užitečné, protože jej nemůžeme uložit pro pozdější použití. Pro lepší řešení můžeme protokoly vytisknout v textovém souboru, který později uložíme a analyzujeme. Protokoly jsou textové a lze je uchovávat v textovém souboru libovolného formátu, ale všeobecně se používá k ukládání protokolů do souboru s .přípona protokolu. Tyto soubory jsou známé jako soubory protokolu a používají se univerzálně k ukládání protokolů programů, webových aplikací a dalšího softwaru.

Můžeme ukládat protokoly do souboru nastavením konfigurace modulu protokolování pomocí funkce basicConfig (). Musíme zadat název souboru, kam chceme uložit protokoly, v parametru název souboru funkce basicConfig (), poté se záznamy automaticky vytisknou v souboru protokolu, který zadáme. Podívejme se na praktický příklad, abychom věděli, jak to funguje.

import logování logování.basicConfig (úroveň = protokolování.INFO, název souboru = "mylog.přihlášení ").kritické („Toto je kritická zpráva“) protokolování.chyba ("Toto je chybová zpráva") protokolování.upozornění („Toto je varovná zpráva“) protokolování.info ("Toto je informační zpráva") protokolování.debug („Toto je debugovací zpráva“)

Při spuštění kódu vidíte, že byl v aktuálním názvu pracovního adresáře vytvořen nový soubor mylog.log. Při otevření souboru v textovém editoru si můžete všimnout, že protokoly byly uloženy do souboru.

Pokud znovu spustíme kód, uvidíme, že se do souboru připojí protokol. Můžeme to změnit zadáním parametru filemode ve funkci basiconfig (). Ve výchozím nastavení má parametr filemode hodnotu „a“, což znamená append. Někdy ale také chceme odstranit dříve zaznamenaná data a zapsat nové protokoly pouze do souboru. Za tímto účelem můžeme dát parametru filemode hodnotu „w“, což znamená write, a vymaže všechna předchozí data v souboru a zapíše nová. Ukázku najdete v následujícím příkladu.

import logování logování.basicConfig (úroveň = protokolování.INFO, název souboru = "mylog.přihlášení ", filemode =" w ").kritické („Toto je kritická zpráva“) protokolování.chyba ("Toto je chybová zpráva") protokolování.upozornění („Toto je varovná zpráva“) protokolování.info ("Toto je informační zpráva") protokolování.debug („Toto je debugovací zpráva“)

Při spuštění výše uvedeného kódu si můžete všimnout, že dřívější protokoly přítomné v souboru byly ze souboru odebrány a byly přidány nové protokoly. Pokaždé, když spustíme kód, budou přidány nové protokoly a předchozí budou odstraněny, což je užitečné, když nepotřebujeme záznamy pro další použití.

Formátování protokolů

Viděli jsme, že výstupní protokoly mají výchozí rozložení, ale můžeme změnit formát nastavením parametru formátu funkce basicConfig (). Podívejme se na praktickou ukázku, abychom věděli, jak můžeme použít parametr formátu ve funkci basicConfig () ke změně formátu protokolu.

import logování logování.basicConfig (úroveň = protokolování.INFO, formát = "% (název souboru) s:% (název_úrovně) s:% (zpráva) s") protokolování.kritické („Toto je kritická zpráva“) protokolování.chyba ("Toto je chybová zpráva") protokolování.upozornění („Toto je varovná zpráva“) protokolování.info ("Toto je informační zpráva") protokolování.debug („Toto je debugovací zpráva“)

Výstup výše uvedeného kódu je uveden na následujícím obrázku.

Jak vidíte na výstupu, zobrazí se také název souboru. Můžeme použít parametr format pro označení mnoha dalších formátů, pojďme diskutovat o některých z nich.

% (čas) s: Slouží k zobrazení času čitelného v protokolech. Chcete-li zjistit, jak ukazuje čas, spusťte následující kód v prostředí Python IDE.

import logování logování.basicConfig (úroveň = protokolování.INFO, format = "% (asctime) s:% (message) s") logování.varování („Toto je varovná zpráva“)

Při spuštění kódu se může zobrazit výstup, jak je znázorněno na následujícím obrázku.

% (vytvořeno) f: Zobrazí se čas, ve kterém je protokol vytvořen.

% (název souboru) s: Slouží k zobrazení názvu souboru ve zprávě protokolu. Chcete-li zjistit, jak to funguje, stačí spustit následující ukázkový kód v prostředí Python IDE.

import logování logování.basicConfig (úroveň = protokolování.INFO, formát = "% (asctime) s:% (název souboru) s:% (zpráva) s") protokolování.varování („Toto je varovná zpráva“)

Výstup, který kód poskytuje, je zobrazen na následujícím obrázku. Ve výstupu byl zobrazen název souboru. To je užitečné při práci na projektu, který zahrnuje více souborů, abychom mohli rychle získat soubor, který obsahuje chybu.

% (název_úrovně) s: Slouží k zobrazení názvu použité úrovně, jako je VAROVÁNÍ, LADĚNÍ atd.

% (levelno) s: Slouží k tisku číselné hodnoty úrovně, jejíž součástí je zpráva.

% (lineno) d: Slouží k tisku čísla řádku aktuálního řádku, který zobrazuje zprávu. To je velmi užitečné, protože nám dává číslo řádku, kde musíme vidět chybu, takže pomáhá procesu ladění. Podívejme se na ukázkový kód, abychom zjistili, jak to použít k vytvoření výstupu protokolů.

import logování Format = '% (asctime) s:% (název souboru) s:% (lineno) d:% (zpráva) s' logování.basicConfig (úroveň = protokolování.INFO, format = Format) protokolování.varování („Toto je varovná zpráva“)

Tento kód také vytiskne číslo řádku, jak je znázorněno na následujícím obrázku.

% (zpráva) s: Slouží k zobrazení zprávy, kterou jsme zaznamenali.

% (cesta) s: Slouží k zobrazení celé cesty k souboru zdrojového kódu.

% (proces) d: Zobrazí se ID procesu, pokud je k dispozici.

% (název_procesu) s: Zobrazí se název procesu, pokud je k dispozici.

% (vlákno) d: Zobrazí se ID vlákna, pokud je k dispozici.

% (název vlákna) s: Zobrazí se název vlákna, pokud je k dispozici.

Protokolování proměnných dat

Zprávy v protokolech jsme dali sami, což jsou statická data. V aplikacích v reálném světě budou data, která jsme zaznamenali, většinou dynamickými informacemi z naší aplikace. Abychom to mohli udělat, musíme výstup proměnných provést pomocí protokolu zpráv. Můžeme to udělat mnoha způsoby. Například můžeme zahrnout proměnné a naformátovat řetězec pomocí zástupných symbolů a poté je předat do protokolu zpráv, aby se hodnoty proměnných zobrazily v záznamech.

Například viz níže uvedený kód; můžete kopírovat kód běh ve vašem python IDE.

import loging var_message = "interní chyba" logování.varování ("Server byl zastaven z důvodu% s", var_message)

Při spuštění kódu uvidíte výstup, jak je znázorněno na následujícím obrázku. Jak vidíte na obrázku, hodnota uložená v proměnné je také vytištěna na obrazovce.

Můžeme také zobrazit proměnné v protokolech pomocí f-řetězců, které jsou zavedeny v pythonu 3.6. Chcete-li však použít f-řetězce, budete potřebovat python 3.Ve vašem systému nainstalována verze 6 nebo vyšší. Spuštěním následujícího příkazu v terminálu můžete zkontrolovat, která verze pythonu je ve vašem systému nainstalována.

python --version # pro python 2 na Linuxu python3 --version # pro python 3 v Linuxu

Tím se vytiskne verze pythonu, kterou používáte ve svém systému. Je dobrým zvykem používat nejnovější verzi pythonu k dosažení lepšího výkonu; můžete vidět našeho průvodce aktualizací verze pythonu v Linuxu.

Chcete-li formátovat řetězce pomocí f-řetězců v pythonu, musíme použít následující syntaxi kódu. Kód můžete zkopírovat a spustit ve vašem oblíbeném IDE pythonu.

import loging var_message = "interní chyba" logování.varování (f "Server byl zastaven z důvodu var_message")

Při spuštění kódu získáte výstup podobný tomu, který dostaneme při spuštění výše uvedeného kódu. Ale když vidíme kód, můžeme si všimnout f na začátku řetězce, což znamená, že se jedná o řetězec f, a můžeme přímo použít proměnné v řetězcích f jejich vložením do složených závorek.

Protokolování trasování zásobníku

Protokolovací modul lze také použít k zachycení trasování zásobníku. Stohové stopy jsou zprávy výjimek, které jsou vyvolány, když v programu došlo k chybě. Výjimku můžeme zachytit nastavením parametru exc_info na True při volání funkce protokolování. Tento parametr je užitečný, protože můžeme zaznamenat celou zprávu o výjimce pomocí naší chybové zprávy na obrazovce souboru nebo terminálu.

Chcete-li získat praktickou ukázku, abyste věděli, jak můžeme sledovat stopy zásobníku, zkopírujte následující kód do svého IDE pythonu a spusťte.

import logování try: a = 1/0 kromě výjimky jako e: logování.chyba („Došlo k chybě“, exc_info = True)

Při spuštění kódu bude výjimka zaznamenána v terminálu. Uvidíte výstup kódu, jak je znázorněno na následujícím obrázku. Výjimku můžete také přihlásit do souboru pomocí parametru název souboru v metodě basicConfig (), jak jsme diskutovali výše.

Tato metoda je také důležitá při vytváření rozsáhlé aplikace, protože můžeme mít zpracování výjimek s protokolováním, což je vynikající pro proces ladění.

Protokolovací objekty

Modul protokolování také poskytuje některé užitečné třídy, které lze použít pro lepší protokolování, zejména pro širší aplikaci. Podívejme se na některé z nejpoužívanějších tříd protokolovacího modulu a na to, co a jak fungují.

Pokud chcete úplné podrobnosti o používání těchto tříd, můžete se podívat na oficiální dokumentaci modulu protokolování pythonu.

Závěr

V tomto článku jsme se naučili základy protokolování v pythonu. Modul protokolování je přímý a účinný způsob protokolování v pythonu. Předpokládejme, že doposud neprovádíte protokolování, dnes je ten den, kdy můžete začít s protokolováním, když si přečtete článek a zjistíte, jak snadné je používat protokolování v pythonu. Nyní můžete používat protokolování v malých i významných aplikacích.

Pokud provádíte protokolování správně, bude to tak či onak užitečné. Doporučuji vám, abyste jej začali používat od malých programů, protože vám to pomůže získat dobrou znalost věci nebo dvou a bude pro velké projekty neocenitelný. Můžete také vidět, jak pracovat s databázemi SQLite v pythonu. 

Hry Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Hraní her na celou obrazovku nebo používání aplikací v režimu celé obrazovky bez rozptýlení vás mohou odříznout od příslušných systémových informací v...
Hry Top 5 karet pro zachycení hry
Top 5 karet pro zachycení hry
Všichni jsme viděli a milovali streamování her na YouTube. PewDiePie, Jakesepticye a Markiplier jsou jen někteří z nejlepších hráčů, kteří vydělali mi...
Hry Jak vyvíjet hru na Linuxu
Jak vyvíjet hru na Linuxu
Před deseti lety by jen málo uživatelů Linuxu předpovídalo, že jejich oblíbený operační systém bude jednoho dne populární herní platformou pro komerčn...