2012-02-23 14 views
5

Czy mogę przekierować wszystkie dane wyjściowe z stdout do rejestratora, który skonfigurowałem przy użyciu standardowego modułu logging? (mam os.system wzywa którego wyjście Chciałbym również, aby zobaczyć czy occational wydruku sprawozdania)Przekieruj stdout do programu rejestrującego w języku Python

+2

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

+0

Dzięki! W jakiś sposób automatyczne sugestie pokazywały tylko standardowe przekierowanie do plików ... – Gerenuk

Odpowiedz

4

Możesz być w stanie skorzystać z sugestii w this post, przedstawiono poniżej:

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

Kiedy biegać, odciski Scenariusz:

INFO:demo:An INFO message 
DEBUG:demo:An DEBUG message 
Powiązane problemy