diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index 1d85a1da54..4f4e834b58 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -13,6 +13,9 @@ import ssl import urllib.request import urllib.error +from sentry_sdk.hub import Hub +from sentry_sdk.utils import capture_internal_exceptions, event_from_exception + import certifi from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QUrl @@ -365,15 +368,14 @@ class CrashHandler: print("Sending crash report info to [%s]...\n" % self.crash_url) try: - f = urllib.request.urlopen(self.crash_url, **kwoptions) - Logger.log("i", "Sent crash report info.") - if not self.has_started: - print("Sent crash report info.\n") - f.close() - except urllib.error.HTTPError as e: - Logger.logException("e", "An HTTP error occurred while trying to send crash report") - if not self.has_started: - print("An HTTP error occurred while trying to send crash report: %s" % e) + hub = Hub.current + client = hub.client + event, hint = event_from_exception((self.exception_type, self.value, self.traceback), + client_options=client.options, + mechanism={"type": "excepthook", "handled": False}, + ) + hub.capture_event(event, hint=hint) + hub.flush() except Exception as e: # We don't want any exception to cause problems Logger.logException("e", "An exception occurred while trying to send crash report") if not self.has_started: diff --git a/cura_app.py b/cura_app.py index e14b4410bc..cc9a44a5db 100755 --- a/cura_app.py +++ b/cura_app.py @@ -9,8 +9,11 @@ import os import sys from UM.Platform import Platform +from cura import ApplicationMetadata from cura.ApplicationMetadata import CuraAppName +import sentry_sdk + parser = argparse.ArgumentParser(prog = "cura", add_help = False) parser.add_argument("--debug", @@ -18,7 +21,9 @@ parser.add_argument("--debug", default = False, help = "Turn on the debug mode by setting this option." ) + known_args = vars(parser.parse_known_args()[0]) +sentry_sdk.init("https://5034bf0054fb4b889f82896326e79b13@sentry.io/1821564", release = "cura%s" % ApplicationMetadata.CuraVersion, default_integrations=False ) if not known_args["debug"]: def get_cura_dir_path():