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

  • cyriak

    cyriak

    29 Mart 2006
  • Lin Steven

    Lin Steven

    17 EKİM 2006
  • SRT Photoshop Tutorials

    SRT Photosho

    19 Aralık 2012