我可以将stdout的所有输出重定向到我使用标准日志记录模块设置的记录器吗?
(我有os.system调用,其输出我也想看到或掩盖打印语句)@H_403_3@
最佳答案@H_403_3@
您可以使用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
@H_403_3@