summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Cramer <dcramer@gmail.com>2015-07-15 22:42:34 -0700
committerDavid Cramer <dcramer@gmail.com>2015-07-15 22:42:34 -0700
commit0ab984b8da5076712d6dce7cfe788b54b039cbf8 (patch)
treeb6787c06bcd73bf5b2c5d281f3599607267fea9d
parent60944c0b4888529064a1ee99b4e1462327d988a5 (diff)
downloadraven-0ab984b8da5076712d6dce7cfe788b54b039cbf8.tar.gz
Capture errors via sys.excepthook
-rw-r--r--raven/base.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/raven/base.py b/raven/base.py
index 9324da5..5d133d9 100644
--- a/raven/base.py
+++ b/raven/base.py
@@ -117,7 +117,8 @@ class Client(object):
_registry = TransportRegistry(transports=default_transports)
- def __init__(self, dsn=None, raise_send_errors=False, transport=None, **options):
+ def __init__(self, dsn=None, raise_send_errors=False, transport=None,
+ install_sys_hook=True, **options):
global Raven
o = options
@@ -174,6 +175,9 @@ class Client(object):
self._context = Context()
+ if install_sys_hook:
+ self.install_sys_hook()
+
def set_dsn(self, dsn=None, transport=None):
if dsn is None and os.environ.get('SENTRY_DSN'):
msg = "Configuring Raven from environment variable 'SENTRY_DSN'"
@@ -196,6 +200,12 @@ class Client(object):
self.logger.debug("Configuring Raven for host: {0}".format(self.remote))
+ def install_sys_hook(self):
+ def handle_exception(*exc_info):
+ sys.__excepthook__(*exc_info)
+ self.captureException(exc_info=exc_info)
+ sys.excepthook = handle_exception
+
@classmethod
def register_scheme(cls, scheme, transport_class):
cls._registry.register_scheme(scheme, transport_class)