SORU
5 Aralık 2012, ÇARŞAMBA


dosyaya günlüğü ve stdout print logger yapılandırma

Python günlük modülü gayet iyi çalışır bir dosya için bazı hata ayıklama dizeleri oturum açmak için kullanıyorum. Şimdi buna ek olarak, aynı zamanda dizeleri dışarı stdout yazdırmak için bu modülü kullanmak istiyorum. Bunu nasıl yapabilirim? Bir dosya için iplerimi oturum açmak için aşağıdaki kodu kullanıyorum:

logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(
    LOGFILE, maxBytes=(1048576*5), backupCount=7
)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)

ve sonra logger bir fonksiyonu gibi ara

logger.debug("I am written to the file")

Bazı yardım için burada teşekkür ederim.

CEVAP
5 Aralık 2012, ÇARŞAMBA


Sadece bir kök logger tanıtıcı ve StreamHandler ekleyin. Bu StreamHandler stderr yazar. Gerçekten stderr stdout üzerinde gerekir, ama bu ben Python logger kur ve ben de bu FileHandler eklemek için kullanın nedir, emin değilim. O zaman tüm günlükleri iki yere de istediğiniz gibi geliyor şeydir).

import logging
logging.getLogger().addHandler(logging.StreamHandler())

Ayrıca tüm günlük repliklerini ortak bir başlık var ona bir Biçimlendirici ekleyebilirsiniz.

yani:

import logging
logFormatter = logging.Formatter("%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s")
rootLogger = logging.getLogger()

fileHandler = logging.FileHandler("{0}/{1}.log".format(logPath, fileName))
fileHandler.setFormatter(logFormatter)
rootLogger.addHandler(fileHandler)

consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
rootLogger.addHandler(consoleHandler)

Biçiminde yazdırır:

2012-12-05 16:58:26,618 [MainThread  ] [INFO ]  my message

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • MrDevin521

    MrDevin521

    18 Temmuz 2010
  • Perihelion

    Perihelion

    23 NİSAN 2008