Programovanie

Prihlásenie do Pythonu - váš komplexný sprievodca

Prihlásenie do Pythonu - váš komplexný sprievodca

Protokolovanie je zásadný krok, ktorý musí programátor vykonať počas vývoja softvéru. Pomáha vývojárom sledovať udalosti, ktoré sa dejú počas vykonávania programu, čo môže byť užitočné pre budúci proces ladenia. Ak ste novým študentom alebo pracujete na novom projekte, je dobrým zvykom používať protokolovanie na sledovanie toku kódu a na riešenie chýb.

Pri písaní krátkych programov väčšina z nás zvyčajne ignoruje protokolovanie, ale keď sa program stane zložitým, potom je to dôležitý a užitočný krok pomocou protokolovania na odstránenie chýb, ktoré bránia plynulému chodu softvéru. Protokolovanie nie je nič iné ako zapisovanie udalostí v softvéri do protokolového súboru alebo výstup do terminálu.

Protokolovanie sa nepoužíva iba na ladenie. Je to tiež užitočný proces na zhromažďovanie informácií, zhromažďovanie údajov o používaní a mnoho ďalších užitočných úloh. Je to tiež jedna z najbežnejších funkcií webových vývojárov nielen na zisťovanie chýb, ale aj na zhromažďovanie údajov používateľov, ako sú adresy IP, ktoré možno použiť na ďalšiu obchodnú analýzu.

V Pythone poskytuje väčšinu protokolovacích zariadení server ťažba dreva modul prezentovaný v štandardnej knižnici pythonu, takže nemusíme robiť žiadnu ďalšiu konfiguráciu. Pozrime sa, ako ho použiť na prihlásenie v pythone. Pred vykonaním tohto tutoriálu je potrebné mať vo svojom systéme nainštalovanú najnovšiu verziu pythonu. Ak vo svojom systéme nemáte nainštalovaný najnovší python, môžete postupovať podľa nášho podrobného sprievodcu inštaláciou a aktualizáciou pythonu v systéme Linux.

Modul protokolovania Pythonu

Modul protokolovania pythonu je jednou z najpoužívanejších knižníc protokolovania v pythone. Najlepšie na tom je, že je predinštalovaný so štandardnou knižnicou pythonu, takže nemusíme robiť žiadnu konfiguráciu ani inštaláciu. Protokolovací modul je robustný a priamy, čo znamená, že je vhodný pre začiatočníkov aj pre podniky. Ak chcete použiť modul protokolovania v pythone, musíme ho importovať do nášho programu tak, ako to robím v nasledujúcom riadku kódu.

import logovania

Teraz si ukážeme, ako môžeme niektoré správy prihlásiť do terminálu. Stačí skopírovať nasledujúci kód do svojho obľúbeného IDE v pythone a spustiť.

importovať protokolovanie.varovanie („Toto je varovanie“)

Pri spustení vyššie uvedeného kódu dostaneme výstup, ako je znázornené na obrázku nižšie.

Ako je vidieť na výstupe, program vytlačí varovnú správu. Logovací modul má aj niektoré ďalšie úrovne logovania info, chyba a pod., ktoré uľahčujú našu úlohu. Poďme o nich stručne diskutovať na príkladoch.

Úrovne protokolovania v Pythone

Na protokolovanie rôznych správ na úrovni závažnosti je možné použiť veľa úrovní protokolovania. Úrovne, ktoré poskytuje python ťažba dreva modul sú

Tieto úrovne sú uvedené v klesajúcom poradí podľa závažnosti. Pozrime sa, ako tieto úrovne použiť v našom programe. Stačí skopírovať nasledujúci kód a spustiť v prostredí Python IDE.

importovať protokolovanie.kritické („Toto je kritická správa“) protokolovanie.chyba ("Toto je chybové hlásenie") protokolovania.varovanie („Toto je varovná správa“) protokolovanie.info ("Toto je informačná správa") logovanie.debug („Toto je správa Debug“)

Pri spustení vyššie uvedeného kódu v IDE je výstup, ktorý terminál zobrazuje, zobrazený na obrázku nižšie.

Ako vidíte na výstupe, správy DEBUG a INFO sa v termináli nevypisujú, pretože protokolovací modul štandardne protokoloval iba správy úrovne zabezpečenia vyššej alebo rovnej varovaniu. Aby sme zobrazili INFO a DEBUG v termináli, musíme manuálne zmeniť Základnú konfiguráciu záznamníka. K tomu môžeme použiť basicConfig (**kwargs) metóda poskytovaná protokolovacím modulom. Ak si chcete pozrieť jednoduché ukážku konfigurácie, stačí spustiť nasledujúci kód do svojho Python IDE.

importovať protokolovanie.basicConfig (úroveň = protokolovanie.DEBUG).kritické („Toto je kritická správa“) protokolovanie.chyba ("Toto je chybové hlásenie") protokolovania.varovanie („Toto je varovná správa“) protokolovanie.info ("Toto je informačná správa") logovanie.debug („Toto je správa Debug“)

Vo vyššie uvedenom kóde sme nastavili úroveň ťažba dreva.DEBUG, čo znamená, že budú zaznamenané všetky úrovne, ktoré sú nad úrovňou ladenia. Vo vyššie uvedenom kóde budú teda všetky správy zaznamenané, ako je znázornené na obrázku nižšie.

Teraz si povieme viac o metóde basicConfig () modulu protokolovania.

Základné konfigurácie

Logovací modul poskytuje veľmi užitočnú metódu basicConfig (** Kwargs), ktorá sa používa na nastavenie konfigurácií pre logovanie dát. Niektoré z bežne používaných parametrov funkcie basicConfig () sú:

Pozrime sa, ako môžeme tieto konfigurácie použiť v protokolovom module pythonu preskúmaním príkladu jedna za druhou.

Parameter level sa používa na nastavenie úrovne závažnosti, aby ste videli praktické demo, ako ho používať, skopírujte nasledujúci kód do IDE pythonu a spustite.

importovať protokolovanie.basicConfig (úroveň = protokolovanie.INFO) prihlásenie.kritické („Toto je kritická správa“) protokolovanie.chyba ("Toto je chybové hlásenie") protokolovania.varovanie („Toto je varovná správa“) protokolovanie.info ("Toto je informačná správa") logovanie.debug („Toto je správa Debug“)

Po spustení kódu sa môže zobraziť výstup, ako je znázornené na nasledujúcom obrázku. Ako vidíte, správy, ktoré sú nad úrovňou informácií, sa vytlačia, ale správa na úrovni ladenia sa nevytlačí.

Parameter level je užitočná konfigurácia, ktorú je potrebné vykonať, aby súbory denníka neboli príliš veľké a neobsahovali zbytočné údaje a mali iba požadované informácie.

Prihlasovanie do súboru

Len sme videli, ako sa prihlásiť do terminálu, ale prihlásenie do terminálu nie je vždy užitočné, pretože si ho nemôžeme uložiť na neskoršie použitie. Pre lepšie riešenie môžeme protokoly vytlačiť v textovom súbore, ktorý neskôr uložíme a analyzujeme. Protokoly sú textové a je možné ich uchovávať v textovom súbore ľubovoľného formátu, všeobecne sa však používa na ukladanie protokolov do súboru s .rozšírenie protokolu. Tieto súbory sú známe ako protokolové súbory a používajú sa univerzálne na ukladanie protokolov programov, webových aplikácií a iného softvéru.

Záznamy môžeme uložiť do súboru nastavením konfigurácie protokolovacieho modulu pomocou funkcie basicConfig (). Musíme zadať názov súboru, do ktorého chceme uložiť protokoly, v parametri názvu súboru funkcie basicConfig (), po ktorom sa záznamy automaticky vytlačia v protokolovom súbore, ktorý zadáme. Pozrime sa na praktický príklad, aby sme vedeli, ako to funguje.

importovať protokolovanie.basicConfig (úroveň = protokolovanie.INFO, nazov souboru = "mylog.prihlásenie ").kritické („Toto je kritická správa“) protokolovanie.chyba ("Toto je chybové hlásenie") protokolovania.varovanie („Toto je varovná správa“) protokolovanie.info ("Toto je informačná správa") logovanie.debug („Toto je správa Debug“)

Pri spustení kódu môžete vidieť, že v názve aktuálneho pracovného adresára bol vytvorený nový súbor mylog.log. Po otvorení súboru v textovom editore si môžete všimnúť, že protokoly boli uložené do súboru.

Ak znova spustíme kód, uvidíme, že protokol bude pripojený k súboru. Môžeme to zmeniť zadaním parametra filemode vo funkcii basiconfig (). Štandardne má parameter filemode hodnotu „a“, čo je skratka pre append. Niekedy však tiež chceme vymazať predtým zaznamenané údaje a zapísať nové protokoly iba do súboru. Za to môžeme dať parametru filemode hodnotu „w“, čo znamená write, a vymaže všetky predchádzajúce dáta v súbore a zapíše nové. Ukážku nájdete v nasledujúcom príklade.

importovať protokolovanie.basicConfig (úroveň = protokolovanie.INFO, nazov souboru = "mylog.logovanie ", filemode =" w ").kritické („Toto je kritická správa“) protokolovanie.chyba ("Toto je chybové hlásenie") protokolovania.varovanie („Toto je varovná správa“) protokolovanie.info ("Toto je informačná správa") logovanie.debug („Toto je správa Debug“)

Pri spustení vyššie uvedeného kódu si môžete všimnúť, že staršie protokoly nachádzajúce sa v súbore boli zo súboru odstránené a boli pridané nové protokoly. Zakaždým, keď spustíme kód, pridajú sa nové protokoly a predchádzajúce sa odstránia, čo je užitočné, keď záznamy nepotrebujeme na ďalšie použitie.

Formátovanie protokolov

Videli sme, že výstupné protokoly majú predvolené rozloženie, ale formát môžeme zmeniť nastavením parametra formátu funkcie basicConfig (). Pozrime sa na praktickú ukážku, aby sme vedeli, ako môžeme použiť parameter formátu vo funkcii basicConfig () na zmenu formátu protokolu.

importovať protokolovanie.basicConfig (úroveň = protokolovanie.INFO, format = "% (nazov souboru) s:% (nazov urovne) s:% (sprava) s") logovanie.kritické („Toto je kritická správa“) protokolovanie.chyba ("Toto je chybové hlásenie") protokolovania.varovanie („Toto je varovná správa“) protokolovanie.info ("Toto je informačná správa") logovanie.debug („Toto je správa Debug“)

Výstup vyššie uvedeného kódu je uvedený na obrázku nižšie.

Ako vidíte na výstupe, zobrazil sa aj názov súboru. Parameter format môžeme použiť na označenie mnohých ďalších formátov, ktoré nám umožnia diskutovať o niektorých z nich.

% (asctime) s: Slúži na zobrazenie času čitateľného pre človeka v protokoloch. Ak chcete zistiť, ako sa zobrazuje čas, spustite nasledujúci kód v prostredí Python IDE.

importovať protokolovanie.basicConfig (úroveň = protokolovanie.INFO, format = "% (asctime) s:% (message) s") logovanie.varovanie („Toto je varovná správa“)

Po spustení kódu sa môže zobraziť výstup, ako je znázornené na nasledujúcom obrázku.

% (vytvorené) f: Zobrazí sa čas, za ktorý sa protokol vytvorí.

% (názov súboru) s: Používa sa na zobrazenie názvu súboru v protokolovej správe. Ak chcete zistiť, ako to funguje, stačí vo svojom prostredí Python IDE spustiť nasledujúci ukážkový kód.

importovať protokolovanie.basicConfig (úroveň = protokolovanie.INFO, formát = "% (asctime) s:% (názov súboru) s:% (správa) s") logovanie.varovanie („Toto je varovná správa“)

Výstup, ktorý kód poskytuje, je zobrazený na nasledujúcom obrázku. Vo výstupe sa zobrazil názov súboru. Je to užitočné pri práci na projekte, ktorý zahŕňa viac súborov, aby sme rýchlo našli súbor, ktorý obsahuje chybu.

% (levelname) s: Používa sa na zobrazenie názvu použitej úrovne, ako je VAROVANIE, LADENIE atď.

% (levelno) s: Používa sa na tlač číselnej hodnoty úrovne, ktorej je správa súčasťou.

% (lineno) d: Používa sa na vytlačenie čísla riadku aktuálneho riadku, ktorý zobrazuje správu. To je veľmi užitočné, pretože nám dáva číslo riadku, kde musíme vidieť chybu, takže pomáha pri ladení. Pozrime sa na ukážkový kód, pomocou ktorého zistíme, ako ho použiť na formovanie výstupu protokolov.

import logovania Format = '% (asctime) s:% (nazov souboru) s:% (lineno) d:% (sprava) s' logovanie.basicConfig (úroveň = protokolovanie.INFO, format = Format) logovanie.varovanie („Toto je varovná správa“)

Tento kód vytlačí aj riadok č, ako je znázornené na obrázku nižšie.

% (správa) s: Slúži na zobrazenie správy, ktorú sme zaznamenali.

% (cesta) s: Používa sa na zobrazenie celej cesty k súboru zdrojového kódu.

% (proces) d: Toto zobrazí ID procesu, ak je k dispozícii.

% (názov procesu) s: Toto zobrazí názov procesu, ak je k dispozícii.

% (vlákno) d: Toto zobrazí ID vlákna, ak je k dispozícii.

% (názov vlákna) s: Toto zobrazí názov vlákna, ak je k dispozícii.

Protokolovanie premenných údajov

Správy v protokoloch sme dali sami, čo sú statické údaje. V aplikáciách v reálnom svete budú dáta, ktoré sme zaznamenali, väčšinou dynamickými informáciami z našej aplikácie. Aby sme to dosiahli, musíme premenné odoslať do protokolu správ. Môžeme to urobiť mnohými spôsobmi. Napríklad môžeme zahrnúť premenné a naformátovať reťazec so zástupnými symbolmi a potom ich odovzdať do protokolu správ, aby sa hodnoty premenných zobrazovali v záznamoch.

Napríklad pozri nižšie uvedený kód; môžete skopírovať kód z cyklu do svojho python IDE.

import loging var_message = "interná chyba" logovania.varovanie ("Server bol zastavený z dôvodu% s", var_message)

Po spustení kódu uvidíte výstup, ako je znázornené na obrázku nižšie. Ako vidíte na obrázku, hodnota uložená v premennej sa vytlačí aj na obrazovku.

Môžeme tiež zobraziť premenné v protokoloch pomocou f-reťazcov, ktoré sú zavedené v pythone 3.6. Ale na použitie f-reťazcov budete potrebovať python 3.6 alebo novší nainštalovaný vo vašom systéme. Spustením nasledujúceho príkazu v termináli môžete skontrolovať, ktorá verzia pythónu je nainštalovaná vo vašom systéme.

python --version # pre python 2 v systéme Linux python3 --version # pre python 3 v systéme Linux

Týmto sa vytlačí verzia pythonu, ktorú používate vo svojom systéme. Je dobrým zvykom používať najnovšiu verziu pythonu na dosiahnutie lepšieho výkonu; Môžete si pozrieť nášho sprievodcu aktualizáciou verzie pythonu v systéme Linux.

Na formátovanie reťazcov pomocou f-reťazcov v pythone musíme použiť nasledujúcu syntax kódu. Môžete skopírovať a spustiť kód vo svojom obľúbenom IDE v pythone.

import loging var_message = "interná chyba" logovania.varovanie (f "Server bol zastavený z dôvodu var_message")

Pri spustení kódu získate výstup podobný tomu, ktorý dostaneme pri spustení vyššie uvedeného kódu. Ale keď vidíme kód, môžeme si všimnúť f na začiatku reťazca, čo znamená, že ide o reťazec f, a môžeme priamo používať premenné v reťazcoch f ich vložením do zložených zátvoriek.

Protokolovanie stohovacích stôp

Logovací modul sa dá použiť aj na zachytenie stohovacích stôp. Stopy zásobníka sú správy o výnimkách, ktoré sa vyhodia, keď sa v programe vyskytne chyba. Výnimku môžeme zachytiť nastavením parametra exc_info na hodnotu True pri volaní funkcie protokolovania. Tento parameter je užitočný, pretože môžeme zaznamenať celú správu o výnimke pomocou našej chybovej správy na obrazovku súboru alebo terminálu.

Ak chcete získať praktické ukážku, aby ste vedeli, ako môžeme vyhľadať stopy zásobníka, skopírujte nasledujúci kód do svojho python IDE a spustite.

import logovania skúste: a = 1/0 okrem výnimky ako e: logovanie.chyba („Vyskytla sa chyba“, exc_info = True)

Pri spustení kódu sa výnimka zaznamená do terminálu. Uvidíte výstup kódu, ako je znázornené na obrázku nižšie. Výnimku môžete tiež prihlásiť do súboru pomocou parametra názvu súboru v metóde basicConfig (), ako sme už diskutovali vyššie.

Táto metóda je tiež rozhodujúca pri vytváraní rozsiahlej aplikácie, pretože môžeme mať výnimku pri protokolovaní, čo je vynikajúce pre proces ladenia.

Protokolovacie objekty

Modul protokolovania tiež poskytuje niektoré užitočné triedy, ktoré je možné použiť na lepšie protokolovanie, hlavne pre širšiu aplikáciu. Pozrime sa na niektoré z najbežnejších tried protokolovacieho modulu a na to, čo a ako fungujú.

Ak chcete získať úplné informácie o tom, ako tieto triedy používať, môžete si prečítať oficiálnu dokumentáciu modulu protokolovania pythonu.

Záver

V tomto článku sme sa naučili základy logovania v pythone. Logovací modul je priamy a výkonný spôsob, ako robiť logovanie v pythone. Predpokladajme, že sa doteraz neprihlasujete. Dnes je ten deň, kedy môžete začať s prihlásením, keď si prečítate článok a dozviete sa, aké ľahké je používať prihlasovanie v pythone. Teraz môžete používať prihlásenie v malých aj významných aplikáciách.

Ak sa prihlasujete správne, bude skutočne tak či onak užitočné. Odporúčam vám, aby ste ich začali používať od malých programov, pretože vám pomôžu získať dobré vedomosti o veci alebo o dvoch a budú pre veľké projekty neoceniteľné. Možno by vás tiež zaujímalo, ako pracovať s databázami SQLite v pythone. 

Hry Nainštalujte si najnovšiu strategickú hru OpenRA na Ubuntu Linux
Nainštalujte si najnovšiu strategickú hru OpenRA na Ubuntu Linux
OpenRA je herný engine Libre / Free Real Time Strategy, ktorý obnovuje rané hry z Westwoodu, ako napríklad klasické Command & Conquer: Red Alert. Dist...
Hry Nainštalujte si najnovší Dolphin Emulator pre Gamecube a Wii na Linuxe
Nainštalujte si najnovší Dolphin Emulator pre Gamecube a Wii na Linuxe
Emulátor Dolphin vám umožní hrať vybrané hry Gamecube a Wii na osobných počítačoch Linux (PC). Emulátor Dolphin, ktorý je voľne dostupným emulátorom ...
Hry Ako používať GameConqueror Cheat Engine v Linuxe
Ako používať GameConqueror Cheat Engine v Linuxe
Tento článok obsahuje sprievodcu používaním cheatovacieho modulu GameConqueror v systéme Linux. Mnoho používateľov, ktorí hrajú hry v systéme Windows,...