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); }
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); }
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); }
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); } } }
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]); }
/// <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); } } }
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); } }
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); }
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); } }
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); }