Dahili logging
'u kullanan basit bir Python betiğim var.Python - İşlevler arasında logger referansını geçmekten kaçının mı?
Bir işlevin içine giriş yapmayı yapıyorum.
#!/usr/bin/env python
import logging
import ...
def configure_logging():
logger = logging.getLogger("my logger")
logger.setLevel(logging.DEBUG)
# Format for our loglines
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# Setup console logging
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)
# Setup file logging as well
fh = logging.FileHandler(LOG_FILENAME)
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)
return logger
def count_parrots():
...
logger.debug??
if __name__ == '__main__':
logger = configure_logging()
logger.debug("I'm a log file")
parrots = count_parrots()
içimde __main__
gelen logger cezası çağırabilir: Temel yapısı böyle bir şey olurdu. Ancak, count_parrots() işlevinin içinden logger'ı nasıl ararım? Böyle bir kaydediciyi yapılandırmanın en pythonik yolu nedir?
Tamam, böylece loging.getLogger öğesini, günlüğe kaydetmesi gereken her işlevin başında arayabilirim. Kesinlikle savurgan ve tekrarlayan görünüyor? Yeterince adil. Ya da nesne yönelimli olmaktan daha mı iyi olur ve bütün sınıfı bir sınıfa çekmeye çalışır mıyım? (Bildiğim çok genel bir soru, sadece Python dünyasında işin ne olduğunu araştırıyorum). – victorhooi
İşlevinizi logger değişkenini örnek değişkeni olarak atayabilir veya (tercih ettiğim) günlük işlevlerini tek tek işlevlerinize eklemek için bir dekoratör oluşturabilirsiniz –
Bu yanıt Python 'günlüğe kaydetme işleminin yanlış olduğunu hemen hemen gösterir. modül ... – rkrzr