예제 #1
0
        private RavenWrapper()
        {
#if !TEST
            Func <Requester, Requester> removeUserId = new Func <Requester, Requester>(request =>
            {
                //HttpRequester request = req as RequesterData;
                //GDPR compliant, no personal data sent: no server name, no username stored, no ip address
                request.Packet.ServerName           = "linqbridgevs";
                request.Packet.Contexts.Device.Name = "linqbridgevs";
                request.Packet.User.Username        = CommonRegistryConfigurations.GetUniqueGuid(VisualStudioVersion);
                request.Packet.Release        = "1.4.6"; //read it from somewhere
                request.Packet.User.IpAddress = "0.0.0.0";
                return(request);
            });

            Action <Exception> onSendError = new Action <Exception>(ex =>
            {
                Trace.WriteLine("Error sending report to Sentry.io");
                Trace.WriteLine(ex.Message);
                Trace.WriteLine(ex.StackTrace);
            });

            _ravenClient = new RavenClient(RavenClientId)
            {
                BeforeSend     = removeUserId,
                ErrorOnCapture = onSendError,
                Timeout        = TimeSpan.FromMilliseconds(2000) //should fail early if it can't send a message
            };
#endif
        }
예제 #2
0
        public static void Capture(this Exception exception, string vsVersion, ErrorLevel errorLevel = ErrorLevel.Error, string message = "")
        {
            if (string.IsNullOrEmpty(vsVersion))
            {
                return;
            }

            if (!CommonRegistryConfigurations.IsErrorTrackingEnabled(vsVersion))
            {
                return;
            }

            Func <Requester, Requester> removeUserId = new Func <Requester, Requester>(request =>
            {
                //GDPR compliant, no personal data sent: no server name, no username stored, no ip address
                request.Packet.ServerName           = LinqBridgeVs;
                request.Packet.Contexts.Device.Name = LinqBridgeVs;
                request.Packet.User.Username        = CommonRegistryConfigurations.GetUniqueGuid(vsVersion);
                request.Packet.Release        = Assembly.GetExecutingAssembly().VersionNumber();
                request.Packet.User.IpAddress = "0.0.0.0";
                return(request);
            });

            SentryEvent sentryEvent = new SentryEvent(exception)
            {
                Message = message,
                Level   = errorLevel
            };

            sentryEvent.Tags.Add("Visual Studio Version", vsVersion);

            RavenClient ravenClient = new RavenClient(RavenClientId)
            {
                BeforeSend     = removeUserId,
                ErrorOnCapture = OnSendError,
                Timeout        = TimeSpan.FromMilliseconds(Timeout) //should fail early if it can't send a message
            };

            ravenClient.Capture(sentryEvent);
        }