Пример #1
0
        public Task <string> ReportMessageAsync(string message)
        {
            var sentryMessage = new SentryMessage(message);
            var sentryEvent   = new SentryEvent(sentryMessage);

            return(_sentryClient.CaptureAsync(sentryEvent));
        }
Пример #2
0
        public async Task <string> CaptureExceptionAsync(Exception exception,
                                                         SentryMessage message             = null,
                                                         ErrorLevel level                  = ErrorLevel.Error,
                                                         IDictionary <string, string> tags = null,
                                                         string[] fingerprint              = null,
                                                         object extra = null)
        {
            var @event = new SentryEvent(exception)
            {
                Message = message,
                Level   = level,
                Extra   = extra
            };

            if (tags != null)
            {
                foreach (var tag in tags)
                {
                    @event.Tags.Add(tag.Key, tag.Value);
                }
            }

            if (fingerprint != null)
            {
                foreach (var f in fingerprint)
                {
                    @event.Fingerprint.Add(f);
                }
            }

            return(await CaptureAsync(@event));
        }
Пример #3
0
        public void NullString_IsImplicitlyConvertedTo_NullMessage()
        {
            string        stringMessage = null;
            SentryMessage message       = stringMessage;

            Assert.That(message, Is.Null);
        }
Пример #4
0
        //************************************************************************************
        private void buttonSend_Click(object sender, EventArgs e)
        {
            if (CommentBox.Text.Trim() == "")
            {
                CommentBox.ShowBalloon(ToolTipIcon.Warning, "", "Empty message?");
                return;
            }

            Cursor.Current = Cursors.WaitCursor;
            string message = "";

            message += "***************************** MESSAGE *****************************\n";
            message += CommentBox.Text + "\n";
            message += "****************************** NAME *******************************\n";
            message += NameBox.Text + "\n";
            message += "****************************** MAIL *******************************\n";
            message += MailBox.Text + "\n";
            message += "*******************************************************************\n";

            var           ravenClient = new RavenClient("https://[email protected]/1210500");
            SentryMessage msg         = new SentryMessage(message);
            SentryEvent   ev          = new SentryEvent(msg);

            ravenClient.Capture(ev);
            Close();
        }
Пример #5
0
        public async Task SendMessageAsync(string message, Exception ex, string errorLevel)
        {
            if (string.IsNullOrEmpty(message) || ex == null || string.IsNullOrEmpty(errorLevel))
            {
                return;
            }
            var sentryMessage = new SentryMessage(string.Format(
                                                      "Message: {0} \r\n\r\nException:{1}",
                                                      message,
                                                      ex.ToString()));
            var sentryEvent = new SentryEvent(sentryMessage)
            {
                Level = ErrorLevel.Error,
                Tags  = new Dictionary <string, string>()
                {
                    { "device.model", DeviceInfoHelper.DeviceModel.GetStringForNullOrEmptyProperty("0") },
                    { "device.arch", DeviceInfoHelper.SystemArchitecture.GetStringForNullOrEmptyProperty("unknown") },
                    { "app.version", DeviceInfoHelper.ApplicationVersion.GetStringForNullOrEmptyProperty("2.7.9.0") },
                    { "system.version", DeviceInfoHelper.SystemVersion.GetStringForNullOrEmptyProperty("0") },
                    { "system.family", DeviceInfoHelper.SystemFamily.GetStringForNullOrEmptyProperty("unknown") },
                }
            };

            var result = await ravenClient.CaptureAsync(sentryEvent).ConfigureAwait(false);
        }
Пример #6
0
        public void ToString_ReturnsMessage()
        {
            string        stringMessage = Guid.NewGuid().ToString("N");
            SentryMessage message       = new SentryMessage(stringMessage);

            Assert.That(message.ToString(), Is.EqualTo(stringMessage));
        }
Пример #7
0
        public void NullMessage_IsImplicitlyConvertedTo_NullString()
        {
            SentryMessage message       = null;
            string        stringMessage = message;

            Assert.That(stringMessage, Is.Null);
        }
Пример #8
0
        /// <summary>
        /// Writes logging event to the log target.
        /// </summary>
        /// <param name="logEvent">Logging event to be written out.</param>
        protected override void Write(LogEventInfo logEvent)
        {
            try
            {
                var tags = SendLogEventInfoPropertiesAsTags
                    ? logEvent.Properties.ToDictionary(x => x.Key.ToString(), x => x.Value.ToString())
                    : null;

                var extras = SendLogEventInfoPropertiesAsTags
                    ? null
                    : logEvent.Properties.ToDictionary(x => x.Key.ToString(), x => x.Value.ToString());

                client.Value.Logger = logEvent.LoggerName;

                // If the log event did not contain an exception and we're not ignoring
                // those kinds of events then we'll send a "Message" to Sentry
                if (logEvent.Exception == null && !IgnoreEventsWithNoException)
                {
                    var sentryMessage = new SentryMessage(Layout.Render(logEvent));
                    client.Value.CaptureMessage(sentryMessage, LoggingLevelMap[logEvent.Level], extra: extras, tags: tags);
                }
                else if (logEvent.Exception != null)
                {
                    var sentryMessage = new SentryMessage(logEvent.FormattedMessage);
                    client.Value.CaptureException(logEvent.Exception, extra: extras, level: LoggingLevelMap[logEvent.Level], message: sentryMessage, tags: tags);
                }
            }
            catch (Exception e)
            {
                InternalLogger.Error("Unable to send Sentry request: {0}", e.Message);
            }
        }
        /// <summary>
        /// Writes logging event to the log target.
        /// </summary>
        /// <param name="logEvent">Logging event to be written out.</param>
        protected override void Write(LogEventInfo logEvent)
        {
            try
            {
                this.client.Value.Logger = logEvent.LoggerName;
                SentryEvent sentryEvent   = null;
                var         sentryMessage = new SentryMessage(this.Layout.Render(logEvent));

                // If the log event did not contain an exception and we're not ignoring
                // those kinds of events then we'll send a "Message" to Sentry
                if (logEvent.Exception == null && !this.IgnoreEventsWithNoException)
                {
                    sentryEvent = new SentryEvent(sentryMessage);
                }
                else if (logEvent.Exception != null)
                {
                    sentryEvent = new SentryEvent(logEvent.Exception)
                    {
                        Message = sentryMessage
                    };
                }
                if (sentryEvent != null)
                {
                    sentryEvent.Level = LoggingLevelMap[logEvent.Level];
                    sentryEvent.Tags  = GetTags(logEvent);
                    this.client.Value.Capture(sentryEvent);
                }
            }
            catch (Exception ex)
            {
                this.LogException(ex);
            }
        }
Пример #10
0
        //*************************************************************************************************************
        private void buttonSend_Click(object sender, EventArgs e)
        {
            if (CommentBox.Text.Trim() == "")
            {
                CommentBox.ShowBalloon(ToolTipIcon.Warning, "", "Empty message?");
                return;
            }

            Cursor.Current = Cursors.WaitCursor;
            string message = "";

            message += "***************************** MESSAGE *****************************\n";
            message += CommentBox.Text + "\n";
            message += "****************************** NAME *******************************\n";
            message += NameBox.Text + "\n";
            message += "****************************** MAIL *******************************\n";
            message += MailBox.Text + "\n";
            message += "*******************************************************************\n";

            var           ravenClient = new RavenClient("https://[email protected]/5275199");
            SentryMessage msg         = new SentryMessage(message);
            SentryEvent   ev          = new SentryEvent(msg);

            ravenClient.Capture(ev);
            Close();
        }
Пример #11
0
        public void ToString_ReturnsFormattedString()
        {
            Guid          arg     = Guid.NewGuid();
            SentryMessage message = new SentryMessage("Format something {0:N} in here", arg);

            Assert.That(message.ToString(), Is.StringContaining(arg.ToString("N")));
        }
Пример #12
0
 /// <summary>
 /// Captures the message.
 /// </summary>
 /// <param name="message">The message to capture.</param>
 /// <param name="level">The <see cref="ErrorLevel" /> of the captured <paramref name="message" />. Default <see cref="ErrorLevel.Info" />.</param>
 /// <param name="tags">The tags to annotate the captured <paramref name="message" /> with.</param>
 /// <param name="extra">The extra metadata to send with the captured <paramref name="message" />.</param>
 /// <returns>
 /// The <see cref="JsonPacket.EventID" /> of the successfully captured <paramref name="message" />, or <c>null</c> if it fails.
 /// </returns>
 public string CaptureMessage(SentryMessage message,
                              ErrorLevel level = ErrorLevel.Info,
                              Dictionary<string, string> tags = null,
                              object extra = null)
 {
     JsonPacket packet = this.jsonPacketFactory.Create(CurrentDsn.ProjectID, message, level, tags, extra);
     return Send(packet, CurrentDsn);
 }
 public async Task <string> CaptureMessageAsync(SentryMessage message,
                                                ErrorLevel level = ErrorLevel.Info,
                                                IDictionary <string, string> tags = null,
                                                string[] fingerprint = null,
                                                object extra         = null)
 {
     return(await Task.FromResult(Guid.NewGuid().ToString("n")));
 }
Пример #14
0
        public void Message_ReturnsMessage()
        {
            const string  format  = "Format something {0:N} in here";
            var           arg     = Guid.NewGuid();
            SentryMessage message = new SentryMessage(format, arg);

            Assert.That(message.Message, Is.EqualTo(format));
        }
Пример #15
0
 public string CaptureMessage(SentryMessage message,
                              ErrorLevel level = ErrorLevel.Info,
                              IDictionary <string, string> tags = null,
                              string[] fingerprint = null,
                              object extra         = null)
 {
     return(Guid.NewGuid().ToString("n"));
 }
Пример #16
0
 public string CaptureException(Exception exception,
                                SentryMessage message             = null,
                                ErrorLevel level                  = ErrorLevel.Error,
                                IDictionary <string, string> tags = null,
                                string[] fingerprint              = null,
                                object extra = null)
 {
     return(Guid.NewGuid().ToString("n"));
 }
Пример #17
0
        public void Parameters_ReturnsParameters()
        {
            const string  format  = "Format something {0:N} in here";
            var           arg     = Guid.NewGuid();
            SentryMessage message = new SentryMessage(format, arg);

            Assert.That(message.Parameters, Has.Length.EqualTo(1));
            Assert.That(message.Parameters[0], Is.EqualTo(arg));
        }
Пример #18
0
        protected override void Write(LogEventInfo logEvent)
        {
            try
            {
                // don't report non-critical events without exceptions
                if (logEvent.Exception == null || _unauthorized)
                {
                    return;
                }

                var fingerPrint = GetFingerPrint(logEvent);
                if (!_debounce.Allowed(fingerPrint))
                {
                    return;
                }

                var extras = logEvent.Properties.ToDictionary(x => x.Key.ToString(), x => x.Value.ToString());
                _client.Logger = logEvent.LoggerName;


                var sentryMessage = new SentryMessage(logEvent.Message, logEvent.Parameters);

                var sentryEvent = new SentryEvent(logEvent.Exception)
                {
                    Level       = LoggingLevelMap[logEvent.Level],
                    Message     = sentryMessage,
                    Extra       = extras,
                    Fingerprint =
                    {
                        logEvent.Level.ToString(),
                        logEvent.LoggerName,
                        logEvent.Message
                    }
                };

                if (logEvent.Exception != null)
                {
                    sentryEvent.Fingerprint.Add(logEvent.Exception.GetType().FullName);
                }

                var osName         = Environment.GetEnvironmentVariable("OS_NAME");
                var osVersion      = Environment.GetEnvironmentVariable("OS_VERSION");
                var runTimeVersion = Environment.GetEnvironmentVariable("RUNTIME_VERSION");


                sentryEvent.Tags.Add("os_name", osName);
                sentryEvent.Tags.Add("os_version", $"{osName} {osVersion}");
                sentryEvent.Tags.Add("runtime_version", $"{PlatformInfo.PlatformName} {runTimeVersion}");

                _client.Capture(sentryEvent);
            }
            catch (Exception e)
            {
                OnError(e);
            }
        }
Пример #19
0
        public void CaptureMessage_WithFormat_ReturnsValidID()
        {
            object[] args    = Enumerable.Range(0, 5).Select(i => Guid.NewGuid()).Cast <object>().ToArray();
            var      message = new SentryMessage("Lorem %s ipsum %s dolor %s sit %s amet %s.", args);
            var      id      = this.ravenClient.CaptureMessage(message);

            //Console.WriteLine("Sent packet: " + id);

            Assert.That(id, Is.Not.Null);
            Assert.That(Guid.Parse(id), Is.Not.Null);
        }
Пример #20
0
        public void CaptureException_WithMessageFormat_ReturnsValidID()
        {
            object[] args    = Enumerable.Range(0, 5).Select(i => Guid.NewGuid()).Cast <object>().ToArray();
            var      message = new SentryMessage("A {0:N} B {1:N} C {2:N} D {3:N} F {4:N}.", args);
            var      id      = this.ravenClient.CaptureException(new Exception("Test without a stacktrace."), message);

            //Console.WriteLine("Sent packet: " + id);

            Assert.That(id, Is.Not.Null);
            Assert.That(Guid.Parse(id), Is.Not.Null);
        }
Пример #21
0
        private SentryEvent CreateSentryEvent(SentryMessage message)
        {
            var sentryEvent = new SentryEvent(message);

            sentryEvent.Tags.Add("OS", _appInfoService.GetPlatform());
            sentryEvent.Tags.Add("Login", BasePresenter.User.Login);
            sentryEvent.Tags.Add("AppVersion", _appInfoService.GetAppVersion());
            sentryEvent.Tags.Add("AppBuild", _appInfoService.GetBuildVersion());
            sentryEvent.Tags.Add("Model", _appInfoService.GetModel());
            sentryEvent.Tags.Add("OsVersion", _appInfoService.GetOsVersion());
            sentryEvent.Message = message;
            return(sentryEvent);
        }
Пример #22
0
 /// <summary>
 /// Captures the <see cref="Exception" />.
 /// </summary>
 /// <param name="exception">The <see cref="Exception" /> to capture.</param>
 /// <param name="message">The optional messge to capture. Default: <see cref="Exception.Message" />.</param>
 /// <param name="level">The <see cref="ErrorLevel" /> of the captured <paramref name="exception" />. Default: <see cref="ErrorLevel.Error" />.</param>
 /// <param name="tags">The tags to annotate the captured <paramref name="exception" /> with.</param>
 /// <param name="extra">The extra metadata to send with the captured <paramref name="exception" />.</param>
 /// <returns>
 /// The <see cref="JsonPacket.EventID" /> of the successfully captured <paramref name="exception" />, or <c>null</c> if it fails.
 /// </returns>
 public string CaptureException(Exception exception,
                                SentryMessage message = null,
                                ErrorLevel level = ErrorLevel.Error,
                                IDictionary<string, string> tags = null,
                                object extra = null)
 {
     JsonPacket packet = this.jsonPacketFactory.Create(this.currentDsn.ProjectID,
                                                       exception,
                                                       message,
                                                       level,
                                                       tags,
                                                       extra);
     return Send(packet, CurrentDsn);
 }
Пример #23
0
 /// <summary>
 /// Captures the message.
 /// </summary>
 /// <param name="message">The message to capture.</param>
 /// <param name="level">The <see cref="ErrorLevel" /> of the captured <paramref name="message" />. Default <see cref="ErrorLevel.Info" />.</param>
 /// <param name="tags">The tags to annotate the captured <paramref name="message" /> with.</param>
 /// <param name="extra">The extra metadata to send with the captured <paramref name="message" />.</param>
 /// <returns>
 /// The <see cref="JsonPacket.EventID" /> of the successfully captured <paramref name="message" />, or <c>null</c> if it fails.
 /// </returns>
 public string CaptureMessage(SentryMessage message,
                              ErrorLevel level = ErrorLevel.Info,
                              Dictionary <string, string> tags = null,
                              object extra = null)
 {
     try
     {
         JsonPacket packet = this.jsonPacketFactory.Create(CurrentDsn.ProjectID, message, level, tags, extra);
         return(Send(packet, CurrentDsn));
     }
     catch (Exception sendException)
     {
         return(HandleException(sendException));
     }
 }
Пример #24
0
        public string CaptureMessage(SentryMessage message,
                                     ErrorLevel level = ErrorLevel.Info,
                                     IDictionary <string, string> tags = null,
                                     string[] fingerprint = null,
                                     object extra         = null)
        {
            var @event = new SentryEvent(message)
            {
                Level       = level,
                Extra       = extra,
                Tags        = MergeTags(tags),
                Fingerprint = fingerprint
            };

            return(Capture(@event));
        }
        public void SerializeObject_AllPropertiesSetToNonDefault_SerializesValidObject()
        {
            var sut = new SentryMessage
            {
                Message   = "Message {eventId} {name}",
                Params    = new object[] { 100, "test-name" },
                Formatted = "Message 100 test-name"
            };

            var actual = JsonSerializer.SerializeObject(sut);

            Assert.Equal("{\"message\":\"Message {eventId} {name}\","
                         + "\"params\":[100,\"test-name\"],"
                         + "\"formatted\":\"Message 100 test-name\"}",
                         actual);
        }
        public async Task <string> CaptureMessageAsync(SentryMessage message,
                                                       ErrorLevel level = ErrorLevel.Info,
                                                       IDictionary <string, string> tags = null,
                                                       string[] fingerprint = null,
                                                       object extra         = null)
        {
            var @event = new SentryEvent(message)
            {
                Level       = level,
                Extra       = extra,
                Tags        = tags,
                Fingerprint = fingerprint
            };

            return(await CaptureAsync(@event));
        }
Пример #27
0
        public string CaptureMessage(SentryMessage message,
                                     ErrorLevel level = ErrorLevel.Info,
                                     IDictionary <string, string> tags = null,
                                     string[] fingerprint = null,
                                     object extra         = null)
        {
            var finalTags = MergeTags(tags);
            var packet    = this.jsonPacketFactory.Create(CurrentDsn.ProjectID,
                                                          message,
                                                          level,
                                                          finalTags,
                                                          fingerprint,
                                                          extra);

            return(Send(packet));
        }
Пример #28
0
        /// <summary>
        /// Writes logging event to the log target.
        /// </summary>
        /// <param name="logEvent">Logging event to be written out.</param>
        protected override void Write(LogEventInfo logEvent)
        {
            try
            {
                Dictionary <string, string> extras = SendLogEventInfoPropertiesAsTags
                    ? null
                    : logEvent.Properties.ToDictionary(x => x.Key.ToString(), x => x.Value.ToString());

                client.Value.Logger = logEvent.LoggerName;

                // If the log event did not contain an exception and we're not ignoring
                // those kinds of events then we'll send a "Message" to Sentry
                if (logEvent.Exception == null && !IgnoreEventsWithNoException)
                {
                    var sentryMessage = new SentryMessage(Layout.Render(logEvent));
                    var sentryEvent   = new SentryEvent(sentryMessage)
                    {
                        Level       = LoggingLevelMap[logEvent.Level],
                        Extra       = extras,
                        Fingerprint = { logEvent.UserStackFrame?.ToString(), logEvent.LoggerName },
                        Tags        = { { ServiceNameKey, ServiceName } }
                    };

                    client.Value.Capture(sentryEvent);
                }
                else if (logEvent.Exception != null)
                {
                    var sentryMessage = new SentryMessage(logEvent.FormattedMessage);
                    var sentryEvent   = new SentryEvent(logEvent.Exception)
                    {
                        Extra = new Dictionary <string, string> {
                            { RawStackTraceKey, logEvent.Exception.StackTrace }
                        },
                        Level       = LoggingLevelMap[logEvent.Level],
                        Message     = sentryMessage,
                        Fingerprint = { logEvent.UserStackFrame?.ToString(), logEvent.LoggerName },
                        Tags        = { { ServiceNameKey, ServiceName } }
                    };

                    client.Value.Capture(sentryEvent);
                }
            }
            catch (Exception ex)
            {
                LogException(ex);
            }
        }
Пример #29
0
        public static void QueueBobsBuddyTerminalCase(TestInput testInput, TestOutput output, string result, int turn, List <string> debugLog, Region region)
        {
            if (BobsBuddyEventsSent >= MaxBobsBuddyEvents)
            {
                return;
            }

            if (!Helper.IsSigned)
            {
                return;
            }

            // Clean up data
            testInput.RemoveSelfReferencesFromMinions();
            output.ClearListsForReporting();             //ignoring for some temporary debugging

            var msg = new SentryMessage($"BobsBuddy {BobsBuddyUtils.VersionString}: Incorrect Terminal Case: {result}");

            var data = new BobsBuddyData()
            {
                ShortId           = "",
                Turn              = turn,
                Result            = result,
                ThreadCount       = BobsBuddyInvoker.ThreadCount,
                Iterations        = output.simulationCount,
                ExitCondition     = output.myExitCondition.ToString(),
                Input             = testInput,
                Output            = output,
                Log               = ReverseAndClone(debugLog),
                Region            = region,
                CanRemoveLichKing = BobsBuddyInvoker.CanRemoveLichKing
            };

            var bbEvent = new SentryEvent(msg)
            {
                Level = ErrorLevel.Warning,
                Extra = data,
            };

            bbEvent.Tags.Add("region", data.Region.ToString());

            bbEvent.Fingerprint.Add(result);
            bbEvent.Fingerprint.Add(BobsBuddyUtils.VersionString);

            BobsBuddyEvents.Enqueue(bbEvent);
        }
        public async Task <string> CaptureMessageAsync(SentryMessage message, ErrorLevel level = ErrorLevel.Info, IDictionary <string, string> tags = null, string[] fingerprint = null, object extra = null)
        {
            var jsonPacket = new JsonPacket(CurrentDsn.ProjectId)
            {
                MessageObject = message,
                Level         = level,
                Tags          = tags,
                Fingerprint   = fingerprint,
                Extra         = extra,
                Environment   = this.Environment
            };


            var result = await sentryApi.StoreAsync(jsonPacket);

            return(result.id);
        }