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
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
Ne gibi stdout dosyasına ruby logger g...
Uyku günlüğü Log4j XML kullanarak yapı...
Yazmayı java kullanarak bir metin dosy...
Python ile bir dosyaya yeniden yönlend...
Nasıl hem stdout Yönlendirme ve bir do...