public eXError(List <TypedItem> list) { this.Items = list; this.Tds = DateTime.Now; CreatedAt = Tds.ToString(XFConstants.DateTimeFormat); if (list.ContainsKey <Guid>(XFConstants.EventWriter.MessageId)) { MessageId = list.Get <Guid>(XFConstants.EventWriter.MessageId); } if (list.ContainsKey <string>(XFConstants.EventWriter.Message)) { Message = list.Get <string>(XFConstants.EventWriter.Message); } if (list.ContainsKey <string>(XFConstants.Context.ZONE)) { Zone = list.Get <string>(XFConstants.Context.ZONE); } if (list.ContainsKey <string>(XFConstants.Context.Application)) { ApplicationKey = list.Get <string>(XFConstants.Context.Application); } if (list.ContainsKey <string>(XFConstants.EventWriter.ErrorSeverity)) { Severity = list.Get <string>(XFConstants.EventWriter.ErrorSeverity).ToString(); } if (list.ContainsKey <string>(XFConstants.EventWriter.Category)) { Category = list.Get <string>(XFConstants.EventWriter.Category).ToString(); } if (list.ContainsKey <string>(XFConstants.Message.Verb)) { Verb = list.Get <string>(XFConstants.Message.Verb).ToString(); } if (list.ContainsKey <string>(XFConstants.Context.Model)) { Model = list.Get <string>(XFConstants.Context.Model).ToString(); } if (list.ContainsKey <string>(XFConstants.EventWriter.StackTrace)) { StackTrace = list.Get <string>(XFConstants.EventWriter.StackTrace); } if (list.ContainsKey <string>(XFConstants.Context.UICULTURE)) { UICulture = list.Get <string>(XFConstants.Context.UICULTURE); } if (list.ContainsKey <DateTime>(XFConstants.Context.RequestBegin)) { RequestBegin = list.Get <DateTime>(XFConstants.Context.RequestBegin); } if (list.ContainsKey <DateTime>(XFConstants.Metrics.Scope.DataRequestService.Begin)) { DataRequestBegin = list.Get <DateTime>(XFConstants.Metrics.Scope.DataRequestService.Begin); } if (list.ContainsKey <DateTimeOffset>(XFConstants.Metrics.Scope.DataRequestService.End)) { DataRequestEnd = list.Get <DateTime>(XFConstants.Metrics.Scope.DataRequestService.End); } if (list.ContainsKey <DateTimeOffset>(XFConstants.Context.RequestEnd)) { RequestEnd = list.Get <DateTime>(XFConstants.Context.RequestEnd); } if (list.ContainsKey <string>(XFConstants.Metrics.DbType)) { Dbtype = list.Get <string>(XFConstants.Metrics.DbType); if (Dbtype.Equals("sqlserver", StringComparison.OrdinalIgnoreCase)) { if (list.ContainsKey <string>(XFConstants.Metrics.Database.Datasource)) { string datastore = list.Get <string>(XFConstants.Metrics.Database.Datasource); string[] cn = datastore.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (cn != null && cn.Length == 2) { string[] server = cn[0].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries); if (server != null && server.Length == 2) { Server = server[1]; } string[] catalog = cn[1].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries); if (catalog != null && catalog.Length == 2) { Database = catalog[1]; } } } } } if (list.ContainsKey <string>(XFConstants.Metrics.Database.Command)) { var found = list.FirstOrDefault(x => x.Key.Equals(XFConstants.Metrics.Database.Command)); Command = found.Value.ToString(); CommandType = found.Scope; } if (list.ContainsKey <DateTime>(XFConstants.Metrics.Scope.Command.Begin)) { DataAccessBegin = list.Get <DateTime>(XFConstants.Metrics.Scope.Command.Begin); if (list.ContainsKey <DateTime>(XFConstants.Metrics.Scope.Command.End)) { DataAccessEnd = list.Get <DateTime>(XFConstants.Metrics.Scope.Command.End); } } if (list.ContainsKey <string>("request.uri")) { Uri = list.Get <string>("request.uri"); } if (list.ContainsKey <Guid>("app.context.instance")) { AppContextInstance = list.Get <Guid>("app.context.instance").ToString(); } if (list.ContainsKey <string>("app.context.instance")) { AppContextInstance = list.Get <string>("app.context.instance"); } if (list.ContainsKey <string>(XFConstants.Context.Ticket)) { TicketId = list.Get <string>(XFConstants.Context.Ticket); } Year = Tds.Year; Month = Tds.Month; Day = Tds.Day; DayOfWeek = Tds.DayOfWeek.ToString(); Hour = Tds.Hour; Minute = Tds.Minute; }
public Metric(eXMetric item) { AppKey = !String.IsNullOrWhiteSpace(item.ApplicationKey) ? item.ApplicationKey : item.Items.GetValueAs <string>(XFConstants.Context.Application); Zone = !String.IsNullOrWhiteSpace(item.Zone) ? item.Zone : item.Items.GetValueAs <string>(XFConstants.Context.ZONE); Tds = item.Tds; Model = item.Items.GetValueAs <string>(XFConstants.Context.Model); Verb = item.Items.GetValueAs <string>(XFConstants.Message.Verb); User = item.Items.GetValueAs <string>(XFConstants.Context.USERIDENTITY); UIC = item.Items.GetValueAs <string>(XFConstants.Context.UICULTURE); IId = item.Items.GetValueAs <string>(XFConstants.Context.INSTANCEIDENTIFIER); Dbtype = item.Items.GetValueAs <string>(XFConstants.Metrics.DbType); Criteria = item.Items.GetValueAs <string>(XFConstants.Metrics.Criteria); Count = item.Items.GetValueAs <int>(XFConstants.Metrics.Count); RequestBegin = item.Items.GetValueAs <DateTime>(XFConstants.Context.RequestBegin); DataRequestBegin = item.Items.GetValueAs <DateTime>(XFConstants.Metrics.Scope.DataRequestService.Begin); DataRequestEnd = item.Items.GetValueAs <DateTime>(XFConstants.Metrics.Scope.DataRequestService.End); RequestEnd = item.Items.GetValueAs <DateTime>(XFConstants.Context.RequestEnd); if (!String.IsNullOrWhiteSpace(Dbtype) && Dbtype.Equals("sqlserver", StringComparison.OrdinalIgnoreCase)) { string datastore = item.Items.GetValueAs <string>(XFConstants.Metrics.Database.Datasource); if (!String.IsNullOrWhiteSpace(datastore)) { string[] cn = datastore.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (cn != null && cn.Length == 2) { string[] server = cn[0].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries); if (server != null && server.Length == 2) { Server = server[1]; } string[] catalog = cn[1].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries); if (catalog != null && catalog.Length == 2) { Database = catalog[1]; } } } var cnt = item.Items.FirstOrDefault(x => x.Key.Equals(XFConstants.Metrics.Count)); int i; if (cnt != null && Int32.TryParse(cnt.Value.ToString(), out i)) { Count = i; } var found = item.Items.FirstOrDefault(x => x.Key.Equals(XFConstants.Metrics.Scope.Command.Text)); if (found != null) { Command = found.Value.ToString(); CommandType = found.Scope; } DataAccessBegin = item.Items.GetValueAs <DateTime>(XFConstants.Metrics.Scope.Command.Begin); DataAccessEnd = item.Items.GetValueAs <DateTime>(XFConstants.Metrics.Scope.Command.End); TimeSpan ts = DataAccessEnd - DataAccessBegin; DataAccessElapsed = ts.TotalMilliseconds;// Convert.ToDecimal(ts.TotalMilliseconds); } else { var list = item.Items.ToList(); if (list.ContainsKey(XFConstants.Metrics.Database.Datasource)) { string datastore = item.Items.GetValueAs <string>(XFConstants.Metrics.Database.Datasource); Database = datastore; } if (list.ContainsKey(XFConstants.Metrics.Scope.Command.Begin) && list.ContainsKey(XFConstants.Metrics.Scope.Command.End)) { DataAccessBegin = item.Items.GetValueAs <DateTime>(XFConstants.Metrics.Scope.Command.Begin); DataAccessEnd = item.Items.GetValueAs <DateTime>(XFConstants.Metrics.Scope.Command.End); } var found = item.Items.GetValueAs <string>(XFConstants.Metrics.Scope.Command.Text); if (found != null) { Command = found; } DataAccessBegin = DataRequestBegin; DataAccessEnd = DataRequestEnd; TimeSpan ts = DataAccessEnd - DataAccessBegin; DataAccessElapsed = ts.TotalMilliseconds;// Convert.ToDecimal(ts.TotalMilliseconds); } TimeSpan request = RequestEnd - RequestBegin; RequestElapsed = request.TotalMilliseconds;// Convert.ToDecimal(request.TotalMilliseconds); TimeSpan resolver = DataAccessBegin - DataRequestBegin; ResolveMdgElapsed = resolver.TotalMilliseconds; Year = item.Tds.Year; Month = item.Tds.Month; Day = item.Tds.Day; DayOfWeek = item.Tds.DayOfWeek.ToString(); Hour = item.Tds.Hour; Minute = item.Tds.Minute; }