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)
You might be able to make use of the suggestion in this post, 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With