Redirect stdout to logger in Python
Question: Can I redirect all output from `stdout` to a logger I have set up with the
standard `logging` module? (I have os.system calls whose output I'd also like
to see or occational print statements)


Answer: You might be able to make use of the suggestion in [this
post](http://plumberjack.blogspot.com/2009/09/how-to-treat-logger-like-output-
stream.html), summarised below:

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

When run, the script prints:

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

