如何使用python中logging实时保存subprocess.Popen的运行信息
时间: 2024-03-08 15:48:27 浏览: 165
详解Python logging调用Logger.info方法的处理过程
可以使用Python中的logging模块来实时保存subprocess.Popen的运行信息,具体步骤如下:
1. 导入logging模块。
```
import logging
```
2. 创建一个logger对象。
```
logger = logging.getLogger(__name__)
```
3. 创建一个handler对象。
```
handler = logging.FileHandler('log.txt')
```
其中'log.txt'是保存日志的文件名,可以根据需要修改。
4. 设置handler对象的格式。
```
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
```
其中'% (asctime)s'表示日志记录的时间,'% (name)s'表示记录器的名称,'% (levelname)s'表示日志记录的级别,'% (message)s'表示日志记录的消息。
5. 将handler对象添加到logger对象中。
```
logger.addHandler(handler)
```
6. 在subprocess.Popen()中使用stdout参数将子进程的输出重定向到一个管道中,并使用communicate()方法读取管道中的输出。
```
p = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
while True:
output = p.stdout.readline()
if output == b'' and p.poll() is not None:
break
if output:
logger.info(output.strip())
```
其中command是要执行的命令,可以根据需要修改。
7. 在程序的其他位置使用logger对象记录日志。
```
logger.info('This is a log message.')
```
这样,就可以实时保存subprocess.Popen的运行信息了。
阅读全文