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

  • george sarintzotis

    george sarin

    2 Aralık 2007
  • International Secret Agents Concerts

    Internationa

    2 Aralık 2008
  • SVB International

    SVB Internat

    29 EKİM 2011