Programozás

Bejelentkezés a Pythonba - Egyablakos útmutató

Bejelentkezés a Pythonba - Egyablakos útmutató

A naplózás kulcsfontosságú lépés, amelyet egy programozónak el kell végeznie a szoftverfejlesztés során. Segít a fejlesztőknek a program végrehajtása során bekövetkező események nyomon követésében, ami hasznos lehet a jövőbeli hibakeresési folyamatban. Ha új tanuló vagy új projekten dolgozik, célszerű naplózást használni a kódfolyam követésére és a hibák megoldására.

Rövid programok írása közben a legtöbben figyelmen kívül hagyják a naplózást, de amikor a program bonyolulttá válik, akkor a naplózás segítségével elengedhetetlen és hasznos lépés a hibák zavartalanításához. A naplózás nem más, mint az események beírása a szoftverbe egy naplófájlba vagy a terminál kimenete.

A naplózást nem csak hibakereséshez használják. Ez egyúttal hasznos folyamat információk gyűjtésére, használati adatok gyűjtésére és sok más hasznos feladatra is. Ez a webfejlesztők számára az egyik legáltalánosabb funkció nemcsak a hibák felderítésére, hanem a felhasználói adatok, például az IP-címek összegyűjtésére is, amelyek felhasználhatók további üzleti elemzésekhez.

A Pythonban a naplózási lehetőségek nagy részét a fakitermelés modul a python szabványos könyvtárában található, így nem kell külön konfigurálnunk. Lássuk, hogyan lehet használni a naplózáshoz a pythonban. Az oktatóanyag követése előtt telepítenie kell a Python legújabb verzióját a rendszerébe. Ha nincs telepítve a legújabb python a rendszerébe, akkor kövesse lépésről lépésre ismertető útmutatónkat a python telepítéséről és frissítéséről Linux rendszeren.

A Python naplózási modul

A python naplózási modulja az egyik leggyakrabban használt naplózó könyvtár a pythonban. A legjobb az, hogy előre telepítve van a python szabványos könyvtárával, így nem kell semmilyen konfigurációt vagy telepítést végrehajtanunk. A naplózási modul robusztus és egyszerű, ami azt jelenti, hogy kezdőknek és vállalkozásoknak egyaránt hasznos. A naplózási modul pythonban történő használatához be kell importálnunk a programunkba, ahogyan a következő kódsorban teszem.

import naplózás

Most nézzük meg egy bemutatót arról, hogyan tudunk néhány üzenetet naplózni a terminálba. Csak másolja a következő kódot a kedvenc python IDE-be és futtassa.

import naplózás naplózás.figyelmeztetés ("Ez egy figyelmeztetés")

A fenti kód futtatásakor megkapjuk a kimenetet az alábbi képen látható módon.

A kimeneten látható módon a program figyelmeztető üzenetet nyomtat. A naplózási modulnak van néhány más naplózási szintje is információk, hibák stb., amelyek megkönnyítik a feladatunkat. Beszéljük meg röviden példákkal.

Python naplózási szintek

A naplózás sok szintje felhasználható különböző üzenetek naplózására a súlyosság szintjén. A python által biztosított szintek fakitermelés modul vannak

Ezeket a szinteket súlyosságuk csökkenő sorrendjében mutatjuk be. Nézzük meg, hogyan használhatjuk ezeket a szinteket a programunkban. Csak másolja a következő kódot, és futtassa a Python IDE-ben.

import naplózás naplózás.kritikus ("Ez egy kritikus üzenet") naplózás.hiba ("Ez egy hibaüzenet") naplózás.figyelmeztető ("Ez egy figyelmeztető üzenet") naplózás.info ("Ez egy információs üzenet") naplózás.debug ("Ez egy Debug üzenet")

A fenti kód futtatásakor az IDE-ben a kimenet, amelyet a terminál mutat, az alábbi képen látható.

Amint a kimeneten látható, a DEBUG és INFO üzenetek nem kerülnek kinyomtatásra a terminálban, mert a naplózó modul alapértelmezés szerint csak a figyelmeztetésnél magasabb vagy azzal egyenlő biztonsági szintű üzeneteket naplóz. Az INFO és a DEBUG megjelenítéséhez a terminálon manuálisan meg kell változtatnunk a naplózó alapkonfigurációját. Ehhez használhatjuk az basicConfig (**kwargs) módszer a naplózási modul által biztosított. A konfiguráció egyszerű bemutatójának megtekintéséhez futtassa a következő kódot a Python IDE-be.

import naplózás naplózás.basicConfig (szint = naplózás.Hibakeresési naplózás.kritikus ("Ez egy kritikus üzenet") naplózás.hiba ("Ez egy hibaüzenet") naplózás.figyelmeztető ("Ez egy figyelmeztető üzenet") naplózás.info ("Ez egy információs üzenet") naplózás.debug ("Ez egy Debug üzenet")

A fenti kódban beállítottuk a szintet fakitermelés.HIBÁK, ami azt jelenti, hogy minden olyan szintet naplózni fognak, amelyek meghaladják a hibakeresési szintet. Így a fenti kódban az összes üzenet naplózásra kerül, az alábbi képen látható módon.

Beszéljünk részletesebben a naplózási modul basicConfig () metódusáról.

Alapkonfigurációk

A naplózási modul egy nagyon hasznos metódust biztosít a basicConfig (** Kwargs) segítségével, amelyet az adatok naplózásához szükséges konfigurációk beállításához használnak. A basicConfig () függvény néhány gyakran használt paramétere a következő:

Lássuk, miként használhatjuk ezeket a konfigurációkat a python naplózási moduljában, egymás után példa feltárásával.

A level paraméter a súlyosság szintjének beállítására szolgál, annak gyakorlati bemutatásához, hogyan kell használni, másolja az alábbi kódot a python IDE-be és futtassa.

import naplózás naplózás.basicConfig (szint = naplózás.INFO) naplózás.kritikus ("Ez egy kritikus üzenet") naplózás.hiba ("Ez egy hibaüzenet") naplózás.figyelmeztető ("Ez egy figyelmeztető üzenet") naplózás.info ("Ez egy információs üzenet") naplózás.debug ("Ez egy Debug üzenet")

A kód futtatásakor megjelenhet a kimenet, amint az az alábbi képen látható. Amint láthatja, hogy az információs szintek feletti üzenetek kinyomtatásra kerülnek, de a hibakeresési szintü üzenet nem nyomtatódik ki.

A level paraméter egy hasznos konfiguráció, amelyet meg kell tenni, hogy a naplófájlok ne legyenek túl nagyak felesleges adatokkal, és csak a szükséges információkkal rendelkezzenek.

Bejelentkezés egy fájlba

Csak láttuk, hogyan kell bejelentkezni a terminálba, de a terminálra való bejelentkezés nem mindig hasznos, mivel nem tudjuk későbbi felhasználásra elmenteni. A jobb megoldás érdekében kinyomtathatjuk a naplókat egy szöveges fájlba, amelyet később elmentünk és elemezünk. A naplók szövegesek, és bármilyen formátumú szövegfájlban megtarthatók, de általánosan elfogadott a naplók fájlba mentése a .napló kiterjesztés. Ezeket a fájlokat naplófájloknak nevezik, és univerzálisan használják programok, webalkalmazások és egyéb szoftverek naplóinak tárolására.

A naplókat fájlba menthetjük, ha beállítjuk a naplózási modul konfigurációját az basicConfig () függvény segítségével. Meg kell adnunk annak a fájlnak a nevét, ahová a naplókat menteni akarjuk, az basicConfig () függvény fájlnév paraméterében, amely után a rekordok automatikusan kinyomtatásra kerülnek az általunk megadott naplófájlban. Nézzünk meg egy gyakorlati példát, hogy megtudjuk, hogyan működik.

import naplózás naplózás.basicConfig (szint = naplózás.INFO, fájlnév = "mylog.napló ") naplózás.kritikus ("Ez egy kritikus üzenet") naplózás.hiba ("Ez egy hibaüzenet") naplózás.figyelmeztető ("Ez egy figyelmeztető üzenet") naplózás.info ("Ez egy információs üzenet") naplózás.debug ("Ez egy Debug üzenet")

A kód futtatásakor láthatja, hogy új fájl jött létre a jelenlegi munkakönyvtár nevében mylog.napló. Amikor megnyitja a fájlt egy szövegszerkesztővel, észreveheti, hogy a naplókat elmentették a fájlba.

Ha újra futtatjuk a kódot, látni fogjuk, hogy a napló hozzá lesz fűzve a fájlhoz. Ezen változtathatunk, ha megadjuk a filemode paramétert a basiconfig () függvényben. Alapértelmezés szerint a filemode paraméter értéke „a”, amely a függeléket jelenti. De néha törölni akarjuk a korábban naplózott adatokat is, és az új naplókat csak a fájlba írjuk. Ehhez megadhatjuk a filemode paraméternek az „w” értéket, amely az írást jelenti, és töröl minden korábbi adatot a fájlból, és megírja az újakat. Bemutatóért lásd a következő példát.

import naplózás naplózás.basicConfig (szint = naplózás.INFO, fájlnév = "mylog.log ", filemode =" w ") naplózás.kritikus ("Ez egy kritikus üzenet") naplózás.hiba ("Ez egy hibaüzenet") naplózás.figyelmeztető ("Ez egy figyelmeztető üzenet") naplózás.info ("Ez egy információs üzenet") naplózás.debug ("Ez egy Debug üzenet")

A fenti kód futtatásakor észreveheti, hogy a fájlban lévő korábbi naplók eltávolításra kerültek a fájlból, és az új naplók hozzá lettek adva. Minden alkalommal, amikor futtatjuk a kódot, az új naplók hozzáadódnak, és az előző törlődik, ami akkor hasznos, ha nincs szükségünk a rekordokra további felhasználáshoz.

A naplók formázása

Láttuk, hogy a kimeneti naplók alapértelmezett elrendezésűek, de a formátumot megváltoztathatjuk az basicConfig () függvény formátumparaméterének beállításával. Nézzünk meg egy gyakorlati bemutatót, hogy megtudjuk, hogyan használhatjuk a basicConfig () függvény formátumparaméterét a napló formátumának megváltoztatásához.

import naplózás naplózás.basicConfig (szint = naplózás.INFO, format = "% (fájlnév) s:% (levelname) s:% (message) s") naplózás.kritikus ("Ez egy kritikus üzenet") naplózás.hiba ("Ez egy hibaüzenet") naplózás.figyelmeztető ("Ez egy figyelmeztető üzenet") naplózás.info ("Ez egy információs üzenet") naplózás.debug ("Ez egy Debug üzenet")

A fenti kód kimenete az alábbi képen látható.

Amint a kimeneten látható, a fájlnév is megjelent. Használhatjuk a format paramétert sok más formátum megjelölésére, amelyek segítségével megvitathatunk néhányat.

% (aktuális idő) s: Ez az ember által olvasható idő megjelenítésére szolgál a naplókban. Az idő megjelenítésének megtekintéséhez futtassa a következő kódot a Python IDE-ben.

import naplózás naplózás.basicConfig (szint = naplózás.INFO, format = "% (asctime) s:% (message) s") naplózás.figyelmeztetés ("Ez egy figyelmeztető üzenet")

A kód futtatásakor megjelenhet a kimenet, amint az az alábbi képen látható.

% (létrehozva) f: Ez megjeleníti a napló létrehozásának idejét.

% (fájlnév) s: Ez a fájl nevének megjelenítésére szolgál a naplóüzenetben. A működésének megtekintéséhez futtassa a következő példakódot a Python IDE-jében.

import naplózás naplózás.basicConfig (szint = naplózás.INFO, format = "% (asctime) s:% (fájlnév) s:% (üzenet) s" naplózás.figyelmeztetés ("Ez egy figyelmeztető üzenet")

A kód által biztosított kimenetet a következő kép mutatja. A kimenetben a fájl neve látható. Ez akkor hasznos, ha több fájlt tartalmazó projekten dolgozunk, így gyorsan megszerezhetjük a hibát tartalmazó fájlt.

% (levelname) s: Ez a használt szint nevének megjelenítésére szolgál, például WARNING, DEBUG stb.

% (levelno) s: Ez arra a szintre vonatkozik, amelynek az üzenet része a számértéke.

% (fehérnemű) d: Ez az aktuális sor sorszámának kinyomtatására szolgál, amely megjeleníti az üzenetet. Ez nagyon hasznos, mivel megadja a sor számát, ahol hibát kell látnunk, így segíti a hibakeresési folyamatot. Lássunk egy példakódot, hogy lássuk, hogyan lehet ezt felhasználni a naplók kimenetének kialakításához.

import naplózás Formátum = '% (asctime) s:% (fájlnév) s:% (lineno) d:% (üzenet) s' naplózás.basicConfig (szint = naplózás.INFO, format = Format) naplózás.figyelmeztetés ("Ez egy figyelmeztető üzenet")

Ez a kód kinyomtatja a nem sort is, amint az az alábbi képen látható.

%(üzenetek: A bejelentkezett üzenet megjelenítésére szolgál.

% (elérési út) s: Ez a forráskódfájl teljes elérési útjának megjelenítésére szolgál.

% (folyamat) d: Ez megjeleníti a folyamat azonosítóját, ha rendelkezésre áll.

% (processname) s: Ez megjeleníti a folyamat nevét, ha elérhető.

% (szál) d: Ez megjeleníti a szál azonosítóját, ha elérhető.

% (threadName) s: Ez megjeleníti a szál nevét, ha elérhető.

Változó adatok naplózása

Magunk adtuk meg a naplókban szereplő üzeneteket, amelyek statikus adatok. Mégis, a valós alkalmazásokban a naplózott adatok többnyire dinamikus információk lesznek az alkalmazásunkból. Ehhez ki kell adnunk a változókat az üzenetnaplóval. Ezt sokféleképpen tehetjük meg. Például felvehetjük a változókat, és formázhatjuk a karakterláncot helyőrzőkkel, majd továbbíthatjuk az üzenetnaplóba, hogy a változók értékei megjelenjenek a rekordokban.

Lásd például az alábbi kódot; átmásolhatja a futtatott kódot a python IDE-jébe.

import logging var_message = "belső hiba" naplózás.figyelmeztetés ("A kiszolgáló leállt a% s miatt", var_message)

A kód futtatásakor látni fogja a kimenetet, amint az az alábbi képen látható. Amint a képen látható, hogy a változóban tárolt érték is kinyomtatásra kerül a képernyőn.

A naplókban változókat is megjeleníthetünk az f-karakterláncok segítségével, amelyeket a Python 3-ban vezetünk be.6. De az f-karakterláncok használatához python 3-ra lesz szükség.6 vagy újabb telepítve a rendszerébe. A terminálon a következő parancs futtatásával ellenőrizheti, hogy mely Python verzió van telepítve a rendszerébe.

python --version # for python 2 Linux alatt python3 --version # for python 3 Linux alatt

Ez kinyomtatja a rendszerben használt python verzióját. Jó gyakorlat a python legújabb verziójának használata a jobb teljesítmény érdekében; láthatja útmutatónkat a python verzió frissítéséhez Linux alatt.

A karakterláncok formázásához az f-karakterláncok használatával a pythonban a következő kódszintaxist kell használnunk. Másolhatja és futtathatja a kódot a kedvenc python IDE-jében.

import logging var_message = "belső hiba" naplózás.figyelmeztetés (f "A szerver leállt a (z) var_message miatt")

A kód futtatásakor hasonló kimenetet kap, mint amit a fenti kód futtatásakor kapunk. De amikor meglátjuk a kódot, észrevehetjük a karakterlánc elején az f értéket, amely azt jelzi, hogy egy f-karakterláncról van szó, és közvetlenül használhatjuk az f-karakterláncokban a változót, ha göndör zárójelbe tesszük őket.

Verem nyomainak naplózása

A naplózási modul veremnyomok rögzítésére is használható. A verem nyomai azok a kivételes üzenetek, amelyeket akkor dobunk, ha hiba történt a programban. A kivételt úgy rögzíthetjük, hogy az exc_info paramétert True értékre állítjuk, miközben meghívjuk a naplózási funkciót. Ez a paraméter hasznos, mivel a teljes kivételüzenetet a hibaüzenetünkkel egy fájl vagy terminál képernyőn tudjuk naplózni.

Ahhoz, hogy gyakorlati bemutatót kapjon arról, hogy miként tudjuk eltüntetni a verem nyomát, másolja a következő kódot a python IDE-be és futtassa.

naplófájl importálása: a = 1/0, kivéve a kivételként e: naplózást.hiba ("Hiba történt", exc_info = Igaz)

A kód futtatásakor a kivétel naplózásra kerül a terminálon. Látni fogja a kód kimenetét, az alábbi képen látható módon. A kivételt fájlba is beírhatja az alapkonfig () metódus fájlnevének paraméterével, amint azt fentebb tárgyaltuk.

Ez a módszer kritikus fontosságú a kiterjedt alkalmazás kiépítése során is, mivel kivételkezeléssel rendelkezhetünk naplózással, ami kiváló a hibakeresési folyamathoz.

Naplózó objektumok

A naplózási modul néhány hasznos osztályt is tartalmaz, amelyek felhasználhatók a jobb naplózáshoz, főleg egy szélesebb körű alkalmazáshoz. Nézzük meg a naplózási modul néhány leggyakrabban használt osztályát, és azt, hogy mik és hogyan működnek.

Ha teljes körű részleteket szeretne kapni ezekről az osztályokról, olvassa el a python naplózási modul hivatalos dokumentációját.

Következtetés

Ebben a cikkben megismertük a naplózás alapjait a pythonban. A naplózási modul egy egyszerű és hatékony módja a naplózásnak a pythonban. Tegyük fel, hogy mostanáig nem naplózol, ma kezdem el a naplózást, amikor elolvasod a cikket, és megtanultad, milyen egyszerű a naplózás használata a pythonban. Mostantól mind a kis, mind a jelentős alkalmazásokban használhatja a naplózást.

Ha helyesen naplózol, az valóban hasznos lehet ilyen vagy olyan módon. Azt tanácsolom, hogy kezdje el használni kis programoktól, mivel ez segít Önnek abban, hogy jól ismerje a dolgot, és felbecsülhetetlen lesz a nagy projekteknél. Azt is megtudhatja, hogyan kell működni az SQLite adatbázisokkal a pythonban. 

A legjobb Gamepad Mapping alkalmazások Linuxhoz
Ha egy tipikus billentyűzet és egér beviteli rendszer helyett szeretnél játékokat játszani Linuxon egy játékvezérlővel, van néhány hasznos alkalmazás ...
Hasznos eszközök Linux játékosok számára
Ha szeretsz Linuxon játszani, akkor valószínű, hogy olyan alkalmazásokat és segédprogramokat használtál, mint a Wine, a Lutris és az OBS Studio a játé...
HD Remastered Games for Linux, amelyeknek soha nem volt korábban Linux kiadásuk
Számos játékfejlesztő és kiadó a régi játékok HD remasterjével áll elő a franchise élettartamának meghosszabbítása érdekében. Kérjük, hogy a rajongók ...