将Python中的标准输出重定向到日志记录器

5
我能否将所有来自 stdout 的输出重定向到一个使用标准 logging 模块设置的记录器中? (我有一些 os.system 调用的输出也想看到,或者偶尔会有 print 语句)

2
将sys.stdout重定向到Python日志记录的方法 - synthesizerpatel
谢谢!不知何故,自动建议只显示了将标准输出重定向到文件的内容... - Gere
1个回答

4

您可以尝试使用以下总结自此篇文章的建议:

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

当运行时,该脚本输出:
INFO:demo:An INFO message
DEBUG:demo:An DEBUG message

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接