コード例 #1
0
ファイル: RaygunClient.cs プロジェクト: rise-x/raygun4net
        private async Task <RaygunRequestMessage> BuildRequestMessage()
        {
            var message = _currentHttpContext.Value != null ? await RaygunAspNetCoreRequestMessageBuilder.Build(_currentHttpContext.Value, _requestMessageOptions) : null;

            _currentHttpContext.Value = null;
            return(message);
        }
コード例 #2
0
        //public IActionResult Index()
        //{
        //    throw new Exception("Yikes an Error!!!");
        //    //return View();
        //}

        public async Task <IActionResult> Index()
        {
            try
            {
                throw new Exception("Yikes an Error!!!");
                //return View();
            }
            catch (Exception ex)
            {
                var msg = new RaygunMessage();

                msg.Details = new RaygunMessageDetails
                {
                    User    = RayGunUtils.BuildRayGunIdentifierMessage(HttpContext.User),
                    Error   = RaygunErrorMessageBuilder.Build(ex),
                    Request = await RaygunAspNetCoreRequestMessageBuilder.Build(HttpContext, new RaygunRequestMessageOptions())
                };

                var rgClient = _rgProvider.GetClient(new RaygunSettings(), HttpContext);
                await rgClient.SendInBackground(msg);

                return(View());
                //return new JsonResult(new ExceptionResponse
                //{
                //    ErrorId = Guid.NewGuid(),
                //    Message = ex.Message
                //}); ;
            }
        }
コード例 #3
0
        public static async Task <RaygunMessage> BuildRayGunMessageAsync(HttpContext httpContext, Exception ex, IList <string> tags, Dictionary <object, object> customData)
        {
            var msg = new RaygunMessage();

            msg.Details = new RaygunMessageDetails
            {
                User = BuildRayGunIdentifierMessage(httpContext.User),
                //Error = RaygunErrorMessageBuilder.Build(ex),
                Tags           = tags,
                UserCustomData = customData,
                Request        = await RaygunAspNetCoreRequestMessageBuilder.Build(httpContext, new RaygunRequestMessageOptions())
            };

            return(msg);
        }
コード例 #4
0
        public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
        {
            if (logEvent.Level < _restrictedToMinimumLevel)
            {
                return;
            }

            if (_httpContextAccessor?.HttpContext == null)
            {
                return;
            }

            var options = new RaygunRequestMessageOptions
            {
                IsRawDataIgnored    = _raygunSettings.IsRawDataIgnored,
                UseXmlRawDataFilter = _raygunSettings.UseXmlRawDataFilter,
                IsRawDataIgnoredWhenFilteringFailed = _raygunSettings.IsRawDataIgnoredWhenFilteringFailed,
                UseKeyValuePairRawDataFilter        = _raygunSettings.UseKeyValuePairRawDataFilter
            };

            options.AddCookieNames(_raygunSettings.IgnoreCookieNames ?? Array.Empty <string>());
            options.AddHeaderNames(_raygunSettings.IgnoreHeaderNames ?? Array.Empty <string>());
            options.AddFormFieldNames(_raygunSettings.IgnoreFormFieldNames ?? Array.Empty <string>());
            options.AddQueryParameterNames(_raygunSettings.IgnoreQueryParameterNames ?? Array.Empty <string>());
            options.AddSensitiveFieldNames(_raygunSettings.IgnoreSensitiveFieldNames ?? Array.Empty <string>());
            options.AddServerVariableNames(_raygunSettings.IgnoreServerVariableNames ?? Array.Empty <string>());

            RaygunRequestMessage httpRequestMessage = RaygunAspNetCoreRequestMessageBuilder
                                                      .Build(_httpContextAccessor.HttpContext, options)
                                                      .GetAwaiter()
                                                      .GetResult();

            RaygunResponseMessage httpResponseMessage = RaygunAspNetCoreResponseMessageBuilder.Build(_httpContextAccessor.HttpContext);

            // The Raygun request/response messages are stored in the logEvent properties collection.
            // When the error is sent to Raygun, these messages are extracted from the known properties
            // and then removed so as to not duplicate data in the payload.
            logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty(RaygunRequestMessagePropertyName, httpRequestMessage, true));
            logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty(RaygunResponseMessagePropertyName, httpResponseMessage, true));
        }