我在树莓派中运行 python 代码。该代码应该永远存在。但是,几个小时后它崩溃了。由于它在远程机器上运行,我看不到它在崩溃期间给出的消息。
如何将此消息存储在文件中,以便查看问题所在?这是在linux中自主完成的吗?或者我应该编写一些函数来在崩溃期间导出错误。我怎样才能做到这一点?
我在树莓派中运行 python 代码。该代码应该永远存在。但是,几个小时后它崩溃了。由于它在远程机器上运行,我看不到它在崩溃期间给出的消息。
如何将此消息存储在文件中,以便查看问题所在?这是在linux中自主完成的吗?或者我应该编写一些函数来在崩溃期间导出错误。我怎样才能做到这一点?
如果进程是这样启动的,您可以将输出存储在文件中:
python script.py >> /logdir/script.py.log 2>&1
如果主函数崩溃,您可以拥有一个主函数并登录
def main():
...
raise ValueError("Crashed because I'm a bad exception")
...
if __name__ == "__main__":
try:
main()
except Exception as e:
logger.exception("main crashed. Error: %s", e)
如果您正在使用类似 logstash 的东西并希望在您的 UI 上查看错误和时间,这会更好。
感谢Eric改进了答案
我自己尝试了很多次,但它们看起来都很奇怪......直到我想通了!只需在您的 python 文件周围编写此代码,一切都会好起来的!顺便说一句,我将命名崩溃日志 CRASH- 然后是 python 时间(例如 CRASH-1607012036.015824.txt)
try:
<your program here>
except Exception as e:
crash=["Error on line {}".format(sys.exc_info()[-1].tb_lineno),"\n",e]
print(crash)
timeX=str(time.time())
with open("monstergame/crashlogs/CRASH-"+timeX+".txt","w") as crashLog:
for i in crash:
i=str(i)
crashLog.write(i)
注意:这是 Python 3 代码,而不是 Python 2