Alternatif Bir Loglama Modülü Logg3r

Merhaba arkadaşlar,
İki gündür bir proje üzerinde çalışıyorum. Ve bu proje de bir loglama modülü olacak. Sonunda bitti, şimdi de bunu yayımladım. Github hesabım üzerinde. Yakında bir dökümantasyon yazacağım ama zaten şuan kullanımı çok kolay. Henüz 100 satır bile olmadı kod. Ama geliştireceğim. Zaten şuanda ilk alpha sürümünde. Sizin önerileriniz kapsamında geliştireceğim.
indirme linki :

Merhabalar,
Üzerinden zaman geçmiş ama kodlara şimdi bakabildim. Dikkatimi çeken birkaç şey oldu.

typelogtext = type(logtext)
typeimportancelevel = type(importancelevel)
def TypeError(typelogtext, typeimportancelevel):
	if(typelogtext == "<class 'str'>"):
		noerrorattypelogtext = True

Bu blok, asla True döndürmeyecek bir blok. Çünkü type() fonksiyonu bize Python’ın yorumlayabileceği bir cevap (str, int, list, tuple vs.) döndürür. Gördüğümüz sonuç <class 'str'> ama Python o ifadeyi komple alıp karşılaştırmıyor. Bunu şu şekilde ispat edebiliriz:

string = 'yazbel'

>>> type(string)
# <class 'str'>

ifade1 = " <class 'str'>"
ifade2 = str # str, "str" değil.

>>> type(string) == ifade1
# False

>>> type(string) == ifade2 
# True
  1. satırda da gene böyle bir kontrol var, onu da düzeltmek lazım.

if(importance == 0):
	logimportance = "Not Important"
elif(importance > 0 and importance == 10):
	logimportance = "Important"
elif(importance > 0 and importance == 20):
	logimportance = "More Important"
elif(importance > 0 and importance == 30):
	logimportance = "So Important"
elif(importance > 0 and importance == 40):
	logimportance = "Critical"
elif(importance > 0 and importance == 50):
	logimportance = "CRITICAL!"

Hata seviyesi 0 ise "Önemli Olmayan Hata"nın varlığı değil, bir hatanın olmadığı anlaşılmalıdır ama semantik hataları sonraya bırakıp kontrol yapısıyla ilgili bir şey söylemek istiyorum. Burada hata seviyelerini integer değerlere göre kontrol ediyorsak, 10 olan sayı, 0’dan büyüktür, 20 olan sayı da 0’dan büyüktür yani koşul ifadelerindeki 0’dan büyükse kontrolü orada bir anlam ifade etmiyor. Daha fazla doğruluk sağlamıyor, sadece yük.

Hataların önem seviyesini belirten sözcükleri de buradaki veya başka bir kaynaktaki sözcüklerle karşılaştırıp tekrar değerlendirmek isteyebilirsin. “So Important” bir hata benim şu ana kadar hiç karşılaşmadığım ve karşılaşsam bile “Bundan ne anlamam gerekiyor?” diye soracağım bir hata çünkü.


Bir de, gördüğüm kadarıyla os ve sys modülünden bir şey çağrılmıyor, onları niye import etmişiz?

3 Beğeni

Gömülü tipleri gölgelemek de doğru değil.

2 Beğeni

ben şuan hatırlamıyorum ama bir ara bunu denemiştim. Ve çalışmıştı bu kodu aynen kopyalayıp birazcık değiştirerek denemiştim ve çalışmıştı. Ama haklısınız öyle yazmak yerine python yorumlayıcısının döndürdüğü stringin içerisinde işte str var mı int var mı ona göre yapmak mantıklıdır. Haklısınız

Çok haklısınız bu bir yük olacaktır. O seviye olayına gelecek olursak, bu belirttiğiniz kod hata ile ilgili değir uyarı sınıfının içinde bulunan bir koddur. Zaten hata olayı ile ilgisi yoktur ki bence hatanın zaten seviyesi de olmaz. Ama bilginin ve uyarının olabilir.

Onları sonrasında kullanacaktım o yüzden import etmiştim ve kullanacağım da.

ne demek istediğinizi anlamadım.

1 Beğeni

Rezerve kelimeleri kullanmak programı kullanırken hata çıkarabilir.

import = "bunun gibi"
#SyntaxError: invalid syntax

Ve eğer fortran kullanmıyorsanız bu tür atamalardan ve sınıf/fonksiyon tanımlamalarından uzak durun.

1 Beğeni