[编辑]
我在远程服务器中有一个Python应用,我需要调试,当我本地运行该应用程序时,它会打印一些我需要监视的调试信息(包括Python Trackbacks)。
感谢杰里米(Jeremy),我必须使用 tail -f 监视输出文件,然后研究他的代码,我在这里找到了他的命令的以下变体:
ssh root@$IP 'nohup python /root/python/run_dev_server.py &>> /var/log/myapp.log &'
这几乎可以使我几乎完全想要的东西,loggin信息和python追溯,但是我没有从我需要的python中获取任何信息。
。所以我也尝试了他的命令:
ssh root@$IP 'nohup python /root/python/run_dev_server.py 2>&1 >> /var/log/myapp.log &'
它在文件中登录了从 print 以及日志记录信息的程序的输出,但是所有的追溯丢失了,因此我无法调试Python异常。
有没有一种方法可以捕获应用程序产生的所有信息?
预先感谢您的任何建议。
我建议这样做这样的事情:
/usr/bin/nohup COMMAND ARGS 2>&1 >> /var/log/COMMAND.log &
/bin/echo $! > /var/run/COMMAND.pid
nohup在关闭终端/ssh会话后,将过程保持活力
获取stackTrace输出(您可以打印到Stdout,或者做一些诸如电子邮件之类的事情)将以下行添加到您的Python代码中。
导入系统 导入追踪 _old_excepthook = sys.excepthook Def MyExcepthook(Exctype,value,tb): #如果ExCtype ==键盘线路:#处理键盘事件 #现在打印到STDOUT,但可以在这里发送电子邮件或其他任何内容。 打印Trackback.print_tb(TB); _old_excepthook(Exctype,value,Trackback) sys.excepthook = myexcepthook
这将捕获所有异常(包括键盘中断,所以要小心)