我有一个记录器。像这样的东西:
import logging
logger = logging.getLogger('myApp')
hdlr = logging.FileHandler('myApp.log')
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
我正在调用这样的外部进程:
subprocess.call("someCommand")
我想从该进程中单独捕获 stdout 和 stderr ,以便我可以相应地记录它们。例如
logger.info(<stdout>)
logger.error(<stderr>)
我看到了多种方法来捕获一个流中的所有子流程。但是,如果存在实际错误,我想将其记录下来。有没有办法做到这一点?
Use subprocess.Popen()
并打电话.communicate()
在返回的进程对象上:
p = subprocess.Popen(["someCommand"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
if stdout:
logger.info(stdout)
if stderr:
logger.error(stderr)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)