2012-02-23 2 views
5

Posso reindirizzare tutta l'uscita da stdout a un logger che ho configurato con il modulo standard logging? (ho os.system chiama la cui uscita Mi piacerebbe anche vedere o dichiarazioni di stampa occational)Reindirizzamento stdout al logger in Python

+2

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

+0

Grazie! In qualche modo i suggerimenti automatici mostravano solo il reindirizzamento stdout ai file ... – Gerenuk

risposta

4

Potreste essere in grado di utilizzare il suggerimento in this post, riassunte qui di seguito:

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() 

Quando eseguire, le stampe di script:

INFO:demo:An INFO message 
DEBUG:demo:An DEBUG message