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)
-
2Duplicate of stackoverflow.com/questions/975248/…synthesizerpatel– synthesizerpatel2012-02-23 10:10:37 +00:00Commented Feb 23, 2012 at 10:10
-
Thanks! Somehow the automatic suggestions only showed stdout redirection to files...Gere– Gere2012-02-23 10:20:04 +00:00Commented Feb 23, 2012 at 10:20
Add a comment
|
1 Answer
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