コード例 #1
0
        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;
        }
コード例 #2
0
ファイル: Metric.cs プロジェクト: eXtensoft/xf-2.0
        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;
        }