Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime van Kessel <nallath@gmail.com>2022-01-03 16:10:36 +0300
committerJaime van Kessel <nallath@gmail.com>2022-01-03 16:10:36 +0300
commit3bfea5b97094615753fccdb7d03be335417f3228 (patch)
treefad9843499fe3c7f9752ea0985107d6465b25630
parente6830f024161dee17632e178574530c65b9e1072 (diff)
Ensure that stored log lines are sent to sentry if they haven't already been logged
CURA-8760
-rw-r--r--cura/CrashHandler.py11
-rwxr-xr-xcura/CuraApplication.py4
-rw-r--r--plugins/SentryLogger/SentryLogger.py1
3 files changed, 14 insertions, 2 deletions
diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py
index db44daa77c..c911a42350 100644
--- a/cura/CrashHandler.py
+++ b/cura/CrashHandler.py
@@ -12,10 +12,12 @@ import json
import locale
from typing import cast, Any
+import sentry_sdk
+
try:
from sentry_sdk.hub import Hub
from sentry_sdk.utils import event_from_exception
- from sentry_sdk import configure_scope
+ from sentry_sdk import configure_scope, add_breadcrumb
with_sentry_sdk = True
except ImportError:
with_sentry_sdk = False
@@ -424,6 +426,13 @@ class CrashHandler:
if with_sentry_sdk:
try:
hub = Hub.current
+ if not Logger.getLoggers():
+ # No loggers have been loaded yet, so we don't have any breadcrumbs :(
+ # So add them manually so we at least have some info...
+ add_breadcrumb(level = "info", message = "SentryLogging was not initialised yet")
+ for log_type, line in Logger.getUnloggedLines():
+ add_breadcrumb(message=line)
+
event, hint = event_from_exception((self.exception_type, self.value, self.traceback))
hub.capture_event(event, hint=hint)
hub.flush()
diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py
index dbca0b7e96..bf60da374b 100755
--- a/cura/CuraApplication.py
+++ b/cura/CuraApplication.py
@@ -777,10 +777,14 @@ class CuraApplication(QtApplication):
lib_suffixes = {""}
for suffix in lib_suffixes:
self._plugin_registry.addPluginLocation(os.path.join(QtApplication.getInstallPrefix(), "lib" + suffix, "cura"))
+
if not hasattr(sys, "frozen"):
self._plugin_registry.addPluginLocation(os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "plugins"))
self._plugin_registry.preloaded_plugins.append("ConsoleLogger")
+ # Since it's possible to get crashes in code before the sentrylogger is loaded, we want to start this plugin
+ # as quickly as possible, as we might get unsolvable crash reports without it.
+ self._plugin_registry.preloaded_plugins.append("SentryLogger")
self._plugin_registry.loadPlugins()
if self.getBackend() is None:
diff --git a/plugins/SentryLogger/SentryLogger.py b/plugins/SentryLogger/SentryLogger.py
index 29230abb1f..0a65e1e00a 100644
--- a/plugins/SentryLogger/SentryLogger.py
+++ b/plugins/SentryLogger/SentryLogger.py
@@ -11,7 +11,6 @@ try:
except ImportError:
pass
from typing import Optional
-import os
class SentryLogger(LogOutput):