logging modul - ★★ Fog Developer ★★

Novo

6/recent/ticker-posts

logging modul

16.2 logging modul 

Šta ako bi smo mi želeli da, u našem programu koji je radio bekap fajlova, dodamo jednu korisnu funkcionalnost – pored svoje osnovne namene, program bi nam čuvao i neke poruke, koje bi pomagale u slučaju da se desi neka greška ili poruke u kojima bi mogli da proverimo kako je i šta je naš program uradio i da li je bekapovao sve fajlove, kako smo i očekivali? Ovakva funkcionalnost se postiže korišćenjem logging modula. Ja ti sada neću pokazati kako da ovo implementiraš u svoj program, to ti je zadatak za domaći, sada ću ti pokazati najosnovniji način rada sa ovim modulom.
Za naš primer, mi ćemo da koristimo tri modula koji su deo standardne biblioteke – modul os, koji služi za interakciju sa operativnim sistemom, modul platform koji će za nas da „dobavi“ informacije o  operativnom sistemu na kojem program radi, i logging modul koji nam služi za čuvanje (logovanje) različitih  informacija.
Prvo što želimo da saznamo je informacija koji operativni sistem se koristi. Taj podatak nam daje  modul platform:
>>> import platform 
>>> platform.platform() 
'Linux-3.11.0-13-generic-i686-with-Ubuntu-13.10-saucy' 
>>> 
Za više informacija o ovom modulu, u svakom trenutku možeš da pogledaš: import platform; help(platform). Mi zatim proveravamo vraćen stringa iz funkcije platform.platform(). Kada saznamo koja je platforma u pitanju, možemo dalje da radimo, i to ako je u pitanju Windows, mi treba da saznamo informacije: koji je sistemski disk i koji je glavni korisnički folder. Ove informacije nam može obezbediti modul os, i njegova funkcija os.getenv(), koja nam vraća vrednost prosleđene sistemske env varijable (HOME, USER itd – u zavisnosti od operativnog sistema i njegove verzije, ovi podaci mogu mnogo da se razlikuju). Za druge platforme (Linux, OSX), nama treba samo informacija gde je Home folder.
Kada dobijemo ove podatke, mi ćemo da koristimo funkciju os.path.join() kako bi smo sastavili dobijene delove da bi dobili putanju do lokacije u kojoj ćemo smestiti naš fajl. Razlog zbog kog mi koristimo ovu funkciju je taj što na ovaj način će os.path.join() da našem programu osigura da dobijena lokacija bude u odgovarajućem formatu koji očekuje operativni sistem.
Posle toga je potrebno konfigurisati logging modul, kako bi on mogao da čuva naše poruke u formatu koji mi želimo, i u datoteci koju smo mu naveli. Nakon svega ovoga, potrebno je i da definišemo same poruke i njihovu namenu (otklanjanje grešaka, informacije, upozorenja ili kritične poruke).
Pa hajde da napravimo jednostavan program za primer logovanja (možeš da ga sačuvaš kao logeraj.py):
#!/usr/bin/env python3 

'''Skripta koja pokazuje upotrebu logging modula.''' 

import os, logging, platform 

fajl = 'test.log' 

sistem = platform.platform() 
if sistem.startswith('Windows'): 
    particija = os.getenv('HOMEDRIVE') 
    folder = os.getenv('HOMEPATH') 
    log_fajl = os.path.join(particija, folder, fajl) 
else: 
    log_fajl = os.path.join(os.getenv('HOME'), fajl) 

print('Pokrenut je log u fajl:', log_fajl) 

logging.basicConfig(level = logging.DEBUG, 
    format = '%(asctime)s : %(levelname)s : %(message)s', 
    filename = log_fajl, 
    filemode = 'w') 

logging.debug('Startujem program') 
logging.info('Ubacujem fajlove u arhivu.') 
logging.warning('Gotovo!!!!')
Kada pokrenemo ovu skriptu vidimo da je ona kreirala fajl u našem matičnom folderu. Možemo da proverimo ovaj fajl, i videćemo da su informacije upisane u njega, iako nisu direktno prikazivane korisniku programa:
2013-11-11 15:22:06,259 : DEBUG : Startujem program 
2013-11-11 15:22:06,269 : INFO : Ubacujem fajlove u arhivu. 
2013-11-11 15:22:06,269 : WARNING : Gotovo!!!!
Za domaći, pokušaj da funkcionalnost logovanja implementiraš u skriptu koja radi bekap fajlova.

16.1 sys modul Indeks 16.3 Resursi za
učenje o modulima

Постави коментар

0 Коментари