2012-02-23 29 views
5

stdout numaralı tüm çıktıları standart logging modülüyle ayarlamış olduğum bir kaydediciye yeniden yönlendirebilir miyim?Stytut'u Python'da yeniden yönlendiriciye yönlendirin

import logging 

class LoggerWriter: 
    def __init__(self, logger, level): 
     self.logger = logger 
     self.level = level 

    def write(self, message): 
     if message != '\n': 
      self.logger.log(self.level, message) 

def main(): 
    logging.basicConfig(level=logging.DEBUG) 
    logger = logging.getLogger("demo") 
    info_fp = LoggerWriter(logger, logging.INFO) 
    debug_fp = LoggerWriter(logger, logging.DEBUG) 
    print >> info_fp, "An INFO message" 
    print >> debug_fp, "A DEBUG message" 

if __name__ == "__main__": 
    main() 

Ne zaman:

+2

Kopyala http://stackoverflow.com/questions/975248/redirecting-sys-stdout-to-python-logging ait – synthesizerpatel

+0

Teşekkür! Her nasılsa otomatik öneriler sadece dosyalara stdout yönlendirmesi gösterdi ... – Gerenuk

cevap

4
Sen this post içinde öneri faydalanmak mümkün olabilir

, aşağıda özetlenmiştir (Ben os.system kimin çıkışı olduğunu da görebiliyordum ya occational baskı ifadeleri istiyorum çağırır) , script baskılar çalıştırın:

INFO:demo:An INFO message 
DEBUG:demo:An DEBUG message 
İlgili konular