public void Enrich(EventEnrichmentContext context, Event ev) {
     try {
         _enrichmentAction(context, ev);
     } catch (Exception ex) {
         context.Resolver.GetLog().FormattedError(typeof(ActionEnrichment), ex, "An error occurred while running an custom enrichment: {0}", ex.Message);
     }
 }
        public void Enrich(EventEnrichmentContext context, Event ev) {
            foreach (string tag in context.Client.Configuration.DefaultTags)
                ev.Tags.Add(tag);

            foreach (var data in context.Client.Configuration.DefaultData)
                ev.Data[data.Key] = data.Value;
        }
        /// <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 (ev == null)
            {
                throw new ArgumentNullException("ev");
            }

            if (!Configuration.Enabled)
            {
                _log.Value.Info(typeof(ExceptionlessClient), "Configuration is disabled. The error will not be submitted.");
                return;
            }

            if (!Configuration.IsLocked)
            {
                Configuration.LockConfig();
                if (!Configuration.Validate().IsValid)
                {
                    _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 != null && _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.FormattedTrace(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.FormattedTrace(typeof(ExceptionlessClient), "Setting last reference id '{0}'", ev.ReferenceId);
            _lastReferenceIdManager.Value.SetLast(ev.ReferenceId);
        }
        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.SimpleError] = exception.ToSimpleErrorModel();
        }
Beispiel #5
0
 public void Enrich(EventEnrichmentContext context, Event ev)
 {
     try {
         _enrichmentAction(context, ev);
     } catch (Exception ex) {
         context.Resolver.GetLog().FormattedError(typeof(ActionEnrichment), ex, "An error occurred while running an custom enrichment: {0}", ex.Message);
     }
 }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        public void Enrich(EventEnrichmentContext context, Event ev)
        {
            if (ev.Type != Event.KnownTypes.Error)
            {
                return;
            }

            ev.ReferenceId = Guid.NewGuid().ToString("N").Substring(0, 10);
        }
 /// <summary>
 /// Enrich the event with additional information.
 /// </summary>
 /// <param name="context">Context information.</param>
 /// <param name="ev">Event to enrich.</param>
 public void Enrich(EventEnrichmentContext context, Event ev) {
     try {
         int maxEntriesToInclude = context.Client.Configuration.Settings.GetInt32(MaxEntriesToIncludeKey, DefaultMaxEntriesToInclude);
         if (maxEntriesToInclude > 0)
             AddRecentTraceLogEntries(ev, maxEntriesToInclude);
     } catch (Exception ex) {
         context.Log.FormattedError(typeof(TraceLogEnrichment), ex, "Error adding trace information: {0}", ex.Message);
     }
 }
Beispiel #9
0
        public void Enrich(EventEnrichmentContext context, Event ev)
        {
            if (context.Data.GetHttpContext() == null)
            {
                return;
            }

            //error.ExceptionlessClientInfo.Platform = ".NET MVC";
        }
Beispiel #10
0
        public void Enrich(EventEnrichmentContext context, Event ev)
        {
            string submissionMethod = context.Data.GetSubmissionMethod();

            if (!String.IsNullOrEmpty(submissionMethod))
            {
                ev.AddObject(submissionMethod, Event.KnownDataKeys.SubmissionMethod);
            }
        }
        public void Enrich(EventEnrichmentContext context, Event ev) {
            if (ev.Type != Event.KnownTypes.SessionStart)
                return;

            try {
                var collector = context.Resolver.GetEnvironmentInfoCollector();
                ev.Data.Add(Event.KnownDataKeys.EnvironmentInfo, collector.GetEnvironmentInfo());
            } catch (Exception ex) {
                context.Resolver.GetLog().FormattedError(typeof(EnvironmentInfoEnrichment), ex, "Error adding machine information: {0}", ex.Message);
            }
        }
Beispiel #12
0
 /// <summary>
 /// Enrich the event with additional information.
 /// </summary>
 /// <param name="context">Context information.</param>
 /// <param name="ev">Event to enrich.</param>
 public void Enrich(EventEnrichmentContext context, Event ev)
 {
     try {
         int maxEntriesToInclude = context.Client.Configuration.Settings.GetInt32(MaxEntriesToIncludeKey, DefaultMaxEntriesToInclude);
         if (maxEntriesToInclude > 0)
         {
             AddRecentTraceLogEntries(ev, _listener, maxEntriesToInclude);
         }
     } catch (Exception ex) {
         context.Log.FormattedError(typeof(TraceLogEnrichment), ex, "Error adding trace information: {0}", ex.Message);
     }
 }
        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.SimpleError] = exception.ToSimpleErrorModel();
        }
        /// <summary>
        /// Enrich the event with additional information.
        /// </summary>
        /// <param name="context">Context information.</param>
        /// <param name="ev">Event to enrich.</param>
        public void Enrich(EventEnrichmentContext context, Event ev)
        {
            foreach (string tag in context.Client.Configuration.DefaultTags)
            {
                ev.Tags.Add(tag);
            }

            foreach (var data in context.Client.Configuration.DefaultData)
            {
                ev.Data[data.Key] = data.Value;
            }
        }
        public void EnvironmentInfo_IncorrectEventType(string eventType)
        {
            var client  = new ExceptionlessClient();
            var context = new EventEnrichmentContext(client);
            var ev      = new Event {
                Type = eventType
            };

            var enrichment = new EnvironmentInfo();

            enrichment.Enrich(context, ev);
            Assert.Equal(0, ev.Data.Count);
        }
        public void EnvironmentInfo_ShouldAddSessionStart()
        {
            var client  = new ExceptionlessClient();
            var context = new EventEnrichmentContext(client);
            var ev      = new Event {
                Type = Event.KnownTypes.SessionStart
            };

            var enrichment = new EnvironmentInfo();

            enrichment.Enrich(context, ev);
            Assert.Equal(1, ev.Data.Count);
            Assert.NotNull(ev.Data[Event.KnownDataKeys.EnvironmentInfo]);
        }
Beispiel #17
0
        /// <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, IDictionary <string, object> 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");
            }

            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))
            {
                _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))
            {
                _log.Value.FormattedInfo(typeof(ExceptionlessClient), "Setting last reference id '{0}'", ev.ReferenceId);
                _lastReferenceIdManager.Value.SetLast(ev.ReferenceId);
            }

            //LocalConfiguration.SubmitCount++;
        }
        public void Enrich(EventEnrichmentContext context, Event ev)
        {
            if (ev.Type != Event.KnownTypes.SessionStart)
            {
                return;
            }

            try {
                var collector = context.Resolver.GetEnvironmentInfoCollector();
                var info      = collector.GetEnvironmentInfo();
                info.InstallId = context.Client.Configuration.GetInstallId();
                ev.Data.Add(Event.KnownDataKeys.EnvironmentInfo, info);
            } catch (Exception ex) {
                context.Resolver.GetLog().FormattedError(typeof(EnvironmentInfoEnrichment), ex, "Error adding environment information: {0}", ex.Message);
            }
        }
        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);
        }
Beispiel #20
0
        /// <summary>
        /// Enrich the event with additional information.
        /// </summary>
        /// <param name="context">Context information.</param>
        /// <param name="ev">Event to enrich.</param>
        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;
            }

            // TODO: create a simple error model.
            ev.SetError(exception);
        }
Beispiel #21
0
        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 = requestInfo.GetFullPath(includeHttpMethod: true, includeHost: false, includeQueryString: false);
                ev.Data.Clear();
            }

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

            var enrichment = new ConfigurationDefaults();

            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);
            }
        }
        public void Enrich(EventEnrichmentContext context, Event ev) {
            if (ev.Type != Event.KnownTypes.Error)
                return;

            ev.ReferenceId = Guid.NewGuid().ToString("N").Substring(0, 10);
        }