Python'da üç sınıfım var ve farklı iş parçacıklarında çalışıyorlar. Tüm dosyalardan aynı dosyaya çıkış yapmak istiyorum. Şu anda ana sınıfta çıkış yöntemini oluşturdum ve kuruculardan diğer sınıflara geçirdim. Daha iyi halletmenin bir yolu var mı? Kaydediciyi kullanmak dışında, logger'ı sınıflar arasında nasıl geçebilirim?Python sınıfları arasında oturum açma
Belki de python Java'da statik yöntem gibi bir şeyleri destekler, böylece her üç sınıfta da Logger.info (mesaj) gibi yazabilirim?
başka yolu da muhtemelen yani
logger = open('debug.txt', 'w')
sys.stdout = logger
Sonra kullanarak çağrıları tüm sınıflarda sys.stdout belirterek, dosyaya küresel sys.stdout yönlendirme olabilir.
Ne düşünüyorsunuz?
@lazyr. Cevap için teşekkür ederim. Günlük nesnesini sınıflar arasında nasıl geçirebilirim, böylece üç dosyanın tümü ve aynı günlük dosyasına yazılır? – yart
Yukarıdaki kodun ayrı bir dosyada var, yani log.py, sonra diğer modüllerimin her birinde "günlük içe aktarma günlüğünden" gidiyorum. Python yalnızca bir kez bir modül yükler - ilk önce yalnızca önceden yüklenmiş olanı getirdikten sonra herhangi bir içe aktarma ifadesi - böylece tüm ileti dizilerinizde aynı günlük nesnesi olur. –
@lazyr: 'logging' modülünde, bunu yapmanıza gerek yoktur -' logging' modülü kendi modülünde oluşturduğu kaydediciyi tutar. Başka bir modülde 'logging.getLogger'ı tekrar çalıştırabilir ve aynı nesneyi elde edersiniz. – nosklo