一个项目里面需要一个奔溃后发送错误日志的功能。
因为要打包exe, 所以不想写另外一个新exe。然后监控PID什么的。想在一个py。里面完成。求大神给方案
这个是简单的奔溃代码。
from multiprocessing import Process
import time
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
got_error = 'got!!'
def timetask():
try:
while 1:
time.sleep(.1)
except:
print got_error
aaa = QApplication(sys.argv)
p = Process(target = timetask,)
if __name__ == '__main__':
p.start()
for a in xrange(1000):
az = QThread()
az.start()
p.join()
try:
aaa.exec_()
except:
print got_error
2 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
和Java一样,python也提供了对于checked exception和unchecked exception. 对于checked exception,我们通常使用try except可以显示解决,对于unchecked 异常,其实也是提供回调或者是钩子来帮助我们处理的,我们可以在钩子里面记录崩溃栈追踪或者发送崩溃数据.
下面代码可以实现python unchecked exception回调,并输出日志信息.
!/usr/bin/env python
coding=utf-8
import os, sys
import logging
logger = logging.getLogger(__name__)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
def handle_exception(exc_type, exc_value, exc_traceback):
if issubclass(exc_type, KeyboardInterrupt):
sys.__excepthook__(exc_type, exc_value, exc_traceback)
return
logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
sys.excepthook = handle_exception
if name == "__main__":
raise RuntimeError("Test unhandled Exception")
添加回答
举报
0/150
提交
取消