【问题标题】:Redirect stdout to logger in Python将标准输出重定向到 Python 中的记录器
【发布时间】:2012-03-13 17:21:24
【问题描述】:

我可以将stdout 的所有输出重定向到我使用标准logging 模块设置的记录器吗? (我有 os.system 调用,我也想查看其输出或偶尔的打印语句)

【问题讨论】:

标签: python logging stdout


【解决方案1】:

您或许可以利用this post 中的建议,总结如下:

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

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    相关资源
    最近更新 更多