You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
"""Install exception handler for process crash."""
|
|
import os
|
|
import sys
|
|
from selfdrive.version import version, dirty
|
|
|
|
from selfdrive.swaglog import cloudlog
|
|
|
|
if os.getenv("NOLOG") or os.getenv("NOCRASH"):
|
|
def capture_exception(*exc_info):
|
|
pass
|
|
def bind_user(**kwargs):
|
|
pass
|
|
def bind_extra(**kwargs):
|
|
pass
|
|
def install():
|
|
pass
|
|
else:
|
|
from raven import Client
|
|
from raven.transport.http import HTTPTransport
|
|
client = Client('https://1994756b5e6f41cf939a4c65de45f4f2:cefebaf3a8aa40d182609785f7189bd7@app.getsentry.com/77924',
|
|
install_sys_hook=False, transport=HTTPTransport, release=version, tags={'dirty': dirty})
|
|
|
|
def capture_exception(*args, **kwargs):
|
|
client.captureException(*args, **kwargs)
|
|
cloudlog.error("crash", exc_info=kwargs.get('exc_info', 1))
|
|
|
|
def bind_user(**kwargs):
|
|
client.user_context(kwargs)
|
|
|
|
def bind_extra(**kwargs):
|
|
client.extra_context(kwargs)
|
|
|
|
def install():
|
|
# installs a sys.excepthook
|
|
__excepthook__ = sys.excepthook
|
|
def handle_exception(*exc_info):
|
|
if exc_info[0] not in (KeyboardInterrupt, SystemExit):
|
|
capture_exception(exc_info=exc_info)
|
|
__excepthook__(*exc_info)
|
|
sys.excepthook = handle_exception
|
|
|