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

  • Android Police

    Android Poli

    21 NİSAN 2010
  • Droid Life

    Droid Life

    17 Kasım 2009
  • LiteralMSPaint

    LiteralMSPai

    27 EKİM 2010