首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用日志模块在日志文件中记录错误/异常?

如何使用日志模块在日志文件中记录错误/异常?
EN

Stack Overflow用户
提问于 2018-11-16 01:12:28
回答 1查看 227关注 0票数 0

我正在尝试使用logger调试python脚本。它打开另一个python脚本并检查它是否正在运行。如果不是,则重新启动该脚本。

我的脚本:

代码语言:javascript
复制
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

如果找不到文件,则在终端上打印错误:

代码语言:javascript
复制
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

但该错误不在日志文件中:

代码语言:javascript
复制
2018-11-15 22:30:16,269 - INFO - Restart
2018-11-15 22:30:16,325 - ERROR - Exit

如何将终端显示的相同错误记录到日志文件中?

EN

回答 1

Stack Overflow用户

发布于 2018-11-16 02:25:57

在终端中打印的是进程stderr输出。您可以在python脚本中获取该文件并将其打印到日志文件中

代码语言:javascript
复制
>>> 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"
>>> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53324678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档