我正在尝试使用记录器调试python脚本。 它打开另一个python脚本,并检查它是否正在运行。 如果没有,它将重新启动该脚本。
我的脚本:
while True:
print("Restart")
logger.info("Restart")
try:
p = subprocess.Popen(["python", OPEN_FILE]).wait()
except:
logger.exception("Error opening script")
print("Exit")
logger.error("Exit")
time.sleep(10)
if p != 0:
continue
else:
break
如果找不到文件,则在终端上显示错误:
pi@raspberrypi:~/Desktop/MODBUS_TCP $ sudo python py_restart_script.py
Restart
python: can't open
file'/home/pi/Desktop/MODBUS_TCP/API_Modbus_TCP_Server3.py': [Errno 2] No
such file or directory
Exit
但是该错误不在日志文件中:
2018-11-15 22:30:16,269 - INFO - Restart
2018-11-15 22:30:16,325 - ERROR - Exit
如何将终端中显示的相同错误记录到日志文件中?
答案 0 :(得分:1)
终端上显示的是process stderr输出。您可以在python脚本中获取它并将其打印在日志文件中
>>> import subprocess
>>> p = subprocess.Popen(["python", "foobar"], stderr=subprocess.PIPE)
>>> ret = p.wait()
>>> ret # this holds the `subprocess` return code. ret != 0 indicates an error
2
>>> (_, stderr) = p.communicate()
>>> stderr
"python: can't open file 'foobar': [Errno 2] No such file or directory\n"
>>>