将stdout重定向到Python中的记录器

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

最佳答案
您可以使用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

相关文章

我最近重新拾起了计算机视觉,借助Python的opencv还有face_r...
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Poolin...
记得大一学Python的时候,有一个题目是判断一个数是否是复数...
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic ...
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic v...
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic ...