Ejemplo n.º 1
0
        public PersistentEvent ToEvent()
        {
            var ev = new PersistentEvent {
                Id             = Id,
                OrganizationId = OrganizationId,
                ProjectId      = ProjectId,
                StackId        = ErrorStackId,
                Type           = Code == "404" ? Event.KnownTypes.NotFound : Event.KnownTypes.Error,
                Date           = OccurrenceDate,
                IsFixed        = IsFixed,
                IsHidden       = IsHidden,
                Message        = Message
            };

            ev.Tags.AddRange(Tags);

            var error = new Exceptionless.Models.Data.Error {
                Message = Message,
                Type    = Type,
                Code    = Code
            };

            if (StackTrace != null && StackTrace.Count > 0)
            {
                error.StackTrace = StackTrace.ToStackTrace();
            }

            if (TargetMethod != null)
            {
                error.TargetMethod = TargetMethod.ToMethod();
            }

            if (Modules != null && Modules.Count > 0)
            {
                error.Modules = Modules.ToModules();
            }

            if (Inner != null)
            {
                error.Inner = Inner.ToInnerError();
            }

            object traceLog;

            if (ExtendedData != null && ExtendedData.TryGetValue("TraceLog", out traceLog))
            {
                ev.Data[Event.KnownDataKeys.TraceLog] = traceLog;
                ExtendedData.Remove("TraceLog");
            }

            if (ExtendedData != null && ExtendedData.Count > 0)
            {
                error.Data.AddRange(ExtendedData.ToData());
            }

            // TODO: __ExceptionInfo

            ev.Data[Event.KnownDataKeys.Error] = error;

            if (!String.IsNullOrEmpty(UserEmail) || !String.IsNullOrEmpty(UserDescription))
            {
                ev.SetUserDescription(UserEmail, UserDescription);
            }

            if (!String.IsNullOrEmpty(UserName))
            {
                ev.SetUserIdentity(UserName);
            }

            if (RequestInfo != null)
            {
                ev.Data[Event.KnownDataKeys.RequestInfo] = RequestInfo.ToRequestInfo();
            }

            if (EnvironmentInfo != null)
            {
                ev.Data[Event.KnownDataKeys.EnvironmentInfo] = EnvironmentInfo.ToEnvironmentInfo();
            }

            return(ev);
        }