Exemple #1
0
        private void processLogEntry(LogEntry entry)
        {
            if (entry.Level < LogLevel.Verbose)
            {
                return;
            }

            var exception = entry.Exception;

            if (exception != null)
            {
                if (!shouldSubmitException(exception))
                {
                    return;
                }

                // since we let unhandled exceptions go ignored at times, we want to ensure they don't get submitted on subsequent reports.
                if (lastException != null && lastException.Message == exception.Message && exception.StackTrace.StartsWith(lastException.StackTrace, StringComparison.Ordinal))
                {
                    return;
                }

                lastException = exception;
                sentry.CaptureEvent(new SentryEvent(exception)
                {
                    Message = entry.Message
                }, sentryScope);
            }
            else
            {
                sentryScope.AddBreadcrumb(DateTimeOffset.Now, entry.Message, entry.Target.ToString(), "navigation");
            }
        }
Exemple #2
0
        public SentryLogger(OsuGame game)
        {
            if (!game.IsDeployedBuild)
            {
                return;
            }

            var options = new SentryOptions
            {
                Dsn     = new Dsn("https://[email protected]/1255255"),
                Release = game.Version
            };

            sentry      = new SentryClient(options);
            sentryScope = new Scope(options);

            Exception lastException = null;

            Logger.NewEntry += entry =>
            {
                if (entry.Level < LogLevel.Verbose)
                {
                    return;
                }

                var exception = entry.Exception;

                if (exception != null)
                {
                    if (!shouldSubmitException(exception))
                    {
                        return;
                    }

                    // since we let unhandled exceptions go ignored at times, we want to ensure they don't get submitted on subsequent reports.
                    if (lastException != null &&
                        lastException.Message == exception.Message && exception.StackTrace.StartsWith(lastException.StackTrace, StringComparison.Ordinal))
                    {
                        return;
                    }

                    lastException = exception;
                    sentry.CaptureEvent(new SentryEvent(exception)
                    {
                        Message = entry.Message
                    }, sentryScope);
                }
                else
                {
                    sentryScope.AddBreadcrumb(DateTimeOffset.Now, entry.Message, entry.Target.ToString(), "navigation");
                }
            };
        }
Exemple #3
0
        public SentryLogger(QsorBaseGame game)
        {
            if (DebugUtils.IsDebugBuild)
            {
                return;
            }

            var sentryOptions = new SentryOptions
            {
                Dsn     = new Dsn("https://[email protected]/5193034"),
                Release = QsorBaseGame.Version
            };

            _sentry = new SentryClient(sentryOptions);
            var sentryScope = new Scope(sentryOptions);

            Exception lastException = null;

            Logger.NewEntry += async entry =>
            {
                if (entry.Level < LogLevel.Verbose)
                {
                    return;
                }

                var exception = entry.Exception;

                if (exception != null)
                {
                    if (lastException != null && // We shouldn't resubmit the same exception
                        lastException.Message == exception.Message &&
                        exception.StackTrace?.StartsWith(lastException.StackTrace ?? string.Empty) == true)
                    {
                        return;
                    }

                    _sentry.CaptureEvent(new SentryEvent(exception)
                    {
                        Message = entry.Message
                    }, sentryScope);
                    lastException = exception;
                }
                else
                {
                    sentryScope.AddBreadcrumb(DateTimeOffset.Now, entry.Message, entry.Target.ToString(), "qsor-logger");
                }
            };
        }
        public void Log(object logMessage, LogLevel logLevel, params string[] vals)
        {
            if (logLevel == LogLevel.Critical && logMessage is Exception exception && !(exception is NonLoggableException))
            {
                var sentryEvent = new SentryEvent(exception);

                lock (_lockingObject)
                {
                    foreach (var contextKeyValue in ContextData)
                    {
                        sentryEvent.SetExtra(contextKeyValue.Key, contextKeyValue.Value);
                    }
                    SentryClient.CaptureEvent(sentryEvent);
                }
            }
        }
Exemple #5
0
        /// <inheritdoc />
        public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter)
        {
            // Skip irrelevant logging levels
            if (!IsEnabled(logLevel))
            {
                return;
            }

            // Case in which logger.LogError("message") is used
            if (exception == null)
            {
                exception = new Exception($"No exception thrown. Message included: {state}");
            }

            // Log to sentry
            var sentryEvent = new SentryEvent(exception);

            sentryEvent.SetExtra("configuration", _serializedConfiguration);
            sentryEvent.SetExtra("algorithm_configuration", _serializedAlgorithmConfiguration);
            _sentryClient.CaptureEvent(sentryEvent);
        }