public void Enrich(EventEnrichmentContext context, Event ev) {
            if (!context.Data.ContainsKey("HttpActionContext"))
                return;

            HttpActionContext actionContext = context.Data.GetHttpActionContext();
            if (actionContext == null)
                return;

            IPrincipal principal = GetPrincipal(actionContext.Request);
            if (context.Client.Configuration.IncludePrivateInformation && principal != null && principal.Identity.IsAuthenticated)
                ev.SetUserIdentity(principal.Identity.Name);


            RequestInfo requestInfo = null;
            try {
                requestInfo = actionContext.GetRequestInfo(context.Client.Configuration);
            } catch (Exception ex) {
                context.Log.Error(typeof(ExceptionlessWebApiEnrichment), ex, "Error adding request info.");
            }

            if (requestInfo == null)
                return;

            var error = ev.GetError();
            if (error != null && error.Code == "404") {
                ev.Type = Event.KnownTypes.NotFound;
                ev.Source = requestInfo.GetFullPath(includeHttpMethod: true, includeHost: false, includeQueryString: false);
                ev.Data.Clear();
            }

            ev.AddRequestInfo(requestInfo);
        }
Esempio n. 2
0
        public void Enrich(EventEnrichmentContext context, Event ev)
        {
            if (ev.Data.ContainsKey(Event.KnownDataKeys.Version))
            {
                return;
            }

            object value;

            if (context.Client.Configuration.DefaultData.TryGetValue(Event.KnownDataKeys.Version, out value) && value is string)
            {
                ev.Data[Event.KnownDataKeys.Version] = value;
                return;
            }

            if (_checkedForVersion)
            {
                return;
            }

            _checkedForVersion = true;
            string version = null;

            try {
                version = GetVersionFromLoadedAssemblies();
            } catch (Exception) {}

            if (String.IsNullOrEmpty(version))
            {
                return;
            }

            ev.Data[Event.KnownDataKeys.Version] = context.Client.Configuration.DefaultData[Event.KnownDataKeys.Version] = version;
        }
        public void Enrich(EventEnrichmentContext context, Event ev) {
            //error.ExceptionlessClientInfo.Platform = "Nancy";

            var nancyContext = context.Data.GetNancyContext();
            if (nancyContext == null)
                return;

            if (nancyContext.CurrentUser != null && context.Client.Configuration.IncludePrivateInformation)
                ev.SetUserIdentity(nancyContext.CurrentUser.UserName);

            RequestInfo requestInfo = null;
            try {
                requestInfo = nancyContext.GetRequestInfo(context.Client.Configuration);
            } catch (Exception ex) {
                context.Log.Error(typeof(ExceptionlessNancyEnrichment), ex, "Error adding request info.");
            }

            if (requestInfo == null)
                return;

            if (ev.Type == Event.KnownTypes.NotFound) {
                ev.Source = String.Format("{0} {1}", requestInfo.HttpMethod, requestInfo.GetFullPath(includeQueryString: true));
                ev.Data.Clear();
            }

            ev.AddRequestInfo(requestInfo);
        }
Esempio n. 4
0
        public void Enrich(EventEnrichmentContext context, Event ev) {
            var exception = context.Data.GetException();
            if (exception == null)
                return;

            ev.Type = Event.KnownTypes.Error;
            ev.Data[Event.KnownDataKeys.Error] = exception.ToErrorModel(_log);
        }
        public void Enrich(EventEnrichmentContext context, Event ev) {
            if (!context.Client.Configuration.IncludePrivateInformation)
                return;

            var user = ev.GetUserIdentity();
            if (user == null || String.IsNullOrEmpty(user.Identity))
                ev.SetUserIdentity(Environment.UserName);
        }
Esempio n. 6
0
        public void EnvironmentInfo_IncorrectEventType(string eventType) {
            var client = new ExceptionlessClient();
            var context = new EventEnrichmentContext(client);
            var ev = new Event { Type = eventType };

            var enrichment = new EnvironmentInfoEnrichment();
            enrichment.Enrich(context, ev);
            Assert.Equal(0, ev.Data.Count);
        }
 /// <summary>
 /// Called when the event object is created and can be used to add information to the event.
 /// </summary>
 /// <param name="context">Context information.</param>
 /// <param name="ev">Event that was created.</param>
 public static void Enrich(EventEnrichmentContext context, Event ev) {
     foreach (IEventEnrichment enrichment in context.Client.Configuration.Enrichments.ToList()) {
         try {
             enrichment.Enrich(context, ev);
         } catch (Exception ex) {
             context.Resolver.GetLog().FormattedError(typeof(EventEnrichmentManager), ex, "An error occurred while running {0}.Enrich(): {1}", enrichment.GetType().FullName, ex.Message);
         }
     }
 }
Esempio n. 8
0
        public void EnvironmentInfo_ShouldAddSessionStart() {
            var client = new ExceptionlessClient();
            var context = new EventEnrichmentContext(client);
            var ev = new Event { Type = Event.KnownTypes.SessionStart };

            var enrichment = new EnvironmentInfoEnrichment();
            enrichment.Enrich(context, ev);
            Assert.Equal(1, ev.Data.Count);
            Assert.NotNull(ev.Data[Event.KnownDataKeys.EnvironmentInfo]);
        }
Esempio n. 9
0
 /// <summary>
 /// Called when the event object is created and can be used to add information to the event.
 /// </summary>
 /// <param name="context">Context information.</param>
 /// <param name="ev">Event that was created.</param>
 public static void Enrich(EventEnrichmentContext context, Event ev)
 {
     foreach (IEventEnrichment enrichment in context.Client.Configuration.Enrichments.ToList())
     {
         try {
             enrichment.Enrich(context, ev);
         } catch (Exception ex) {
             context.Resolver.GetLog().FormattedError(typeof(EventEnrichmentManager), ex, "An error occurred while running {0}.Enrich(): {1}", enrichment.GetType().FullName, ex.Message);
         }
     }
 }
Esempio n. 10
0
        public void Enrich(EventEnrichmentContext context, Event ev)
        {
            var exception = context.Data.GetException();

            if (exception == null)
            {
                return;
            }

            ev.Type = Event.KnownTypes.Error;
            ev.Data[Event.KnownDataKeys.Error] = exception.ToErrorModel(_log);
        }
Esempio n. 11
0
        public void Enrich(EventEnrichmentContext context, Event ev)
        {
            if (!context.Client.Configuration.IncludePrivateInformation)
            {
                return;
            }

            var user = ev.GetUserIdentity();

            if (user == null || String.IsNullOrEmpty(user.Identity))
            {
                ev.SetUserIdentity(Environment.UserName);
            }
        }
Esempio n. 12
0
        public void Enrich(EventEnrichmentContext context, Event ev)
        {
            if (!context.ContextData.ContainsKey(EventEnrichmentContext.KnownContextDataKeys.Exception))
            {
                return;
            }

            var exception = ev.Data[EventEnrichmentContext.KnownContextDataKeys.Exception] as Exception;

            if (exception == null)
            {
                return;
            }

            ev.SetError(exception.ToErrorModel(_log));
        }
        public void Enrich(EventEnrichmentContext context, Event ev) {
            HttpContextBase httpContext = context.Data.GetHttpContext();

            // if the context is not passed in, try and grab it
            if (httpContext == null && HttpContext.Current != null)
                httpContext = HttpContext.Current.ToWrapped();

            if (httpContext == null)
                return;

            // ev.ExceptionlessClientInfo.Platform = ".NET Web";
            if (context.Client.Configuration.IncludePrivateInformation
                && httpContext.User != null
                && httpContext.User.Identity.IsAuthenticated)
                ev.SetUserIdentity(httpContext.User.Identity.Name);

            var tags = httpContext.Items[TAGS_HTTP_CONTEXT_NAME] as TagSet;
            if (tags != null)
                ev.Tags.UnionWith(tags);

            RequestInfo requestInfo = null;
            try {
                requestInfo = httpContext.GetRequestInfo(context.Client.Configuration);
            } catch (Exception ex) {
                context.Log.Error(typeof(ExceptionlessWebEnrichment), ex, "Error adding request info.");
            }

            if (requestInfo == null)
                return;

            var httpException = context.Data.GetException() as HttpException;
            if (httpException != null) {
                int httpCode = httpException.GetHttpCode();
                if (httpCode == 404) {
                    ev.Type = Event.KnownTypes.NotFound;
                    ev.Source = requestInfo.GetFullPath(includeHttpMethod: true, includeHost: false, includeQueryString: false);
                    ev.Data.Clear();
                }
            }

            ev.AddRequestInfo(requestInfo);
        }
Esempio n. 14
0
        public void ConfigurationDefaults_EnsureNoDuplicateTagsOrData() {
            var client = new ExceptionlessClient();
            var context = new EventEnrichmentContext(client);
            var ev = new Event();

            var enrichment = new ConfigurationDefaultsEnrichment();
            enrichment.Enrich(context, ev);
            Assert.Equal(0, ev.Tags.Count);

            client.Configuration.DefaultTags.Add(Event.KnownTags.Critical);
            enrichment.Enrich(context, ev);
            Assert.Equal(1, ev.Tags.Count);
            Assert.Equal(0, ev.Data.Count);

            client.Configuration.DefaultData.Add("Message", new { Exceptionless = "Is Awesome!" });
            for (int index = 0; index < 2; index++) {
                enrichment.Enrich(context, ev);
                Assert.Equal(1, ev.Tags.Count);
                Assert.Equal(1, ev.Data.Count);
            }
        }
Esempio n. 15
0
        public void Enrich(EventEnrichmentContext context, Event ev) {
            if (ev.Data.ContainsKey(Event.KnownDataKeys.Version))
                return;

            object value;
            if (context.Client.Configuration.DefaultData.TryGetValue(Event.KnownDataKeys.Version, out value) && value is string) {
                ev.Data[Event.KnownDataKeys.Version] = value;
                return;
            }

            if (_checkedForVersion)
                return;
            
            _checkedForVersion = true;
            string version = null;
            try {
                version = GetVersionFromLoadedAssemblies();
            } catch (Exception) {}

            if (String.IsNullOrEmpty(version))
                return;

            ev.Data[Event.KnownDataKeys.Version] = context.Client.Configuration.DefaultData[Event.KnownDataKeys.Version] = version;
        }
        public void Enrich(EventEnrichmentContext context, Event ev) {
            if (context.Data.GetHttpContext() == null)
                return;

            //error.ExceptionlessClientInfo.Platform = ".NET MVC";
        }
        /// <summary>
        /// Submits the event to be sent to the server.
        /// </summary>
        /// <param name="ev">The event data.</param>
        /// <param name="enrichmentContextData">
        /// Any contextual data objects to be used by Exceptionless enrichments to gather default
        /// information for inclusion in the report information.
        /// </param>
        public void SubmitEvent(Event ev, ContextData enrichmentContextData = null) {
            if (!Configuration.Enabled) {
                _log.Value.Info(typeof(ExceptionlessClient), "Configuration is disabled. The error will not be submitted.");
                return;
            }

            if (ev == null)
                throw new ArgumentNullException("ev");

            Configuration.LockConfig();
            if (!Configuration.Validate().IsValid) {
                Configuration.Enabled = false;
                _log.Value.FormattedError(typeof(ExceptionlessClient), "Disabling client due to invalid configuration: {0}", String.Join(", ", Configuration.Validate().Messages));
                return;
            }

            var context = new EventEnrichmentContext(this, enrichmentContextData);
            EventEnrichmentManager.Enrich(context, ev);

            if (_duplicateChecker.Value.IsDuplicate(ev))
                return;

            // ensure all required data
            if (String.IsNullOrEmpty(ev.Type))
                ev.Type = Event.KnownTypes.Log;
            if (ev.Date == DateTimeOffset.MinValue)
                ev.Date = DateTimeOffset.Now;

            if (!OnSubmittingEvent(ev, enrichmentContextData)) {
                _log.Value.FormattedInfo(typeof(ExceptionlessClient), "Event submission cancelled by event handler: id={0} type={1}", ev.ReferenceId, ev.Type);
                return;
            }

            _log.Value.FormattedInfo(typeof(ExceptionlessClient), "Submitting event: type={0}{1}", ev.Type, !String.IsNullOrEmpty(ev.ReferenceId) ? " refid=" + ev.ReferenceId : String.Empty);
            _queue.Value.Enqueue(ev);

            if (String.IsNullOrEmpty(ev.ReferenceId))
                return;

            _log.Value.FormattedInfo(typeof(ExceptionlessClient), "Setting last reference id '{0}'", ev.ReferenceId);
            _lastReferenceIdManager.Value.SetLast(ev.ReferenceId);
        }