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(); }
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); }
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); } }
public void Enrich(EventEnrichmentContext context, Event ev) { if (context.Data.GetHttpContext() == null) { return; } //error.ExceptionlessClientInfo.Platform = ".NET MVC"; }
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); } }
/// <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]); }
/// <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); }
/// <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); }
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); }