Python ile Loglama Çalışması

 

Python ile Loglama Çalışması

    Arkadaşlar selamlar. Bu yazımızda python dilinde loglama nasıl yapabilir ona bakacağız. Bunun için logging kütüphanesini kullanıyoruz. Şimdi ilk önce çeşitli kaynaklardan "Loglama Nedir?" sorusuna cevap arayalım.

Loglama, bir sistemdeki hareketliliği kaydetmek için kullanılan yapıdır. Python standart kütüphanesi içinde loglama için çok güçlü bir kütüphane barındırır. Bu kütüphane ile geliştirdiğimiz programlarda hata ayıklamak aynı zamanda ifadeleri yazdırmak için loglama kullanabiliriz. [1]

  

Log(bir günlük gibi düşünülebilir) kaydı tutmak gerçek hayatta da yazılımda da çok büyük bir öneme sahiptir. Örneğin bankalarda hesaptan hesaba para aktarırken transfer kayıtları vardır. Bir uçak uçtuğunda, kara kutu (uçuş veri kaydedici) her şeyi kaydetmektedir. Eğer bir şeyler ters giderse, ilgili kişiler bu log kayıtlarını okuyabilir ve ne olduğunu anlayabilirler. Bu şekilde çok hızlı ve doğru bir şekilde çözüme ulaşabilirler. Aynı şekilde, sistem oluşturma, hata ayıklama ve çalıştırma için log kaydı tutmak çok önemlidir. Bir program çökerse ve log kaydı yoksa, ne olduğunu anlamak için çok az şansınız vardır. Hele ki bu proje halihazırda kullanılan çok müşterili bir uygulamaysa o projenin sonu bile olabilir. Örneğin, bir sunucu yazarken, log tutmak önemli ve gereklidir. Aşağıdaki ekran görüntüsü, bir log dosyası örneğidir. [2]


Evet şimdi azda olsa bu konu hakkında bilgi sahibi olduğumuzu düşünüyorum. Artık örnek kodumuza geçiş yapalım. Altta kendi yazmış olduğum kodu yorum satırlarıyla olabildiğince anlatmaya çalıştım.

example_logging.py

import datetime #Tarih değerlerini almak için kütüphanemiz budur.
import logging #Loglama yapabilmek için kütüphanemiz budur.
import time #saat işlemleri için kütüphanemiz budur.
import os #dosya işlemleri için kütüphanemiz budur.

#Mesaj formatlarımız burada bulunmaktadır.
def logFormat(stat, message, fileName, time_string):
if stat == "info":
print("info")
logging.basicConfig(filename=fileName+'.log', filemode='a',
            format='%(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logging.info('-' + time_string + '-' + message)
#Burada info formatında dosyaya yazıyoruz.
else:
#İnfo formatı harici olanlar için burayı kullanacağız.
logging.basicConfig(filename=fileName+'.log', filemode='a',
            format='%(name)s - %(levelname)s - %(message)s')
if stat == "error":
logging.error('-' + time_string + '-' + message)
#Error formatında yazıyoruz.
elif stat == "critical":
logging.critical('-' + time_string + '-' + message)
#Critical formatında yazıyoruz.
elif stat == "warning":
logging.warning('-' + time_string + '-' + message)
#Warning formatında yazıyoruz.


#Burada mesaj loglama fonksiyonumuza başlıyoruz.
def logMessage(stat,message):
x = datetime.datetime.now()
#İlk başta bugünün tarihini alıyoruz.
named_tuple = time.localtime() # bununla tarih değerlerini tuple formatında alıyoruz.
time_string = time.strftime("%H:%M:%S", named_tuple) #time_string değişkenine
                                                            %H:%M:%S bu formatta yazıyoruz.

if x.month < 10:
monthNow = "0" + str(x.month)
else:
monthNow = str(x.month)
#Burada ay değeri 10'dan küçükse eğer yanına 0 koyuyoruz
#(belli bir formata uygun olsun diye yapıyoruz diyebiliriz).
#Altta gün içinde aynısını yapacağız.
if x.day < 10:
dayNow = "0" + str(x.day)
else:
dayNow = str(x.day)
print(str(x.year)+"_"+monthNow+"_"+dayNow)
fileName = str(x.year)+"_"+monthNow+"_"+dayNow
#burada log dosyası ismini oluşturuyoruz.

if os.path.isfile(fileName+'.log'): #eğer dosya varsa
print ("File exist")
logFormat(stat, message, fileName, time_string)
else: #eğer dosya yoksa
print ("File not exist")
logFormat("info", "Mfgstudiosblog logging program started working!",
            fileName, time_string)
logFormat(stat, message, fileName, time_string)
print("Finished!")

logMessage("warning","deneme")
logMessage("info","deneme2")
logMessage("error","deneme3")
logMessage("critical","deneme3")

ÇIKTI

Aklınıza takılan bir soru var ise yorumlara yazabilirsiniz :)


Yorumlar

Bu blogdaki popüler yayınlar

Python ile Turtle Kütüphanesiyle Çizim Denemesi 2

Girdimize en yakın palindrom değeri bulan program (Python3 ile)

Python ile Yazıyı Piramit Gibi Çizdirme