public override object GetData(ITabContext context) { if (context.GetMessages <AuthorizerMessage>().Any()) { return(context.GetMessages <AuthorizerMessage>().ToList()); } return("There have been no Authorization events recorded. If you think there should have been, check that the 'Glimpse for Orchard Authorizer' feature is enabled."); }
public override object GetData(ITabContext context) { if (context.GetMessages <SiteSettingsMessage>().Any()) { return(context.GetMessages <SiteSettingsMessage>().ToList()); } return("There is no data available for this tab, check that the 'Glimpse for Orchard Site Settings' feature is enabled."); }
private string GetCurrentPage(ITabContext context, bool mobile) { string page = null; var getDisplayInfoForPageMessage = context.GetMessages<StateRouteHandler.GetDisplayInfoForPage.Message>().FirstOrDefault(); var getPageForDisplayInfoMessage = context.GetMessages<StateRouteHandler.GetPageForDisplayInfo.Message>().FirstOrDefault(); if (getDisplayInfoForPageMessage != null) page = getDisplayInfoForPageMessage.Page; if (getPageForDisplayInfoMessage != null) page = getPageForDisplayInfoMessage.Page; if (page == null) page = (!mobile || StateContext.State.MobilePage.Length == 0) ? StateContext.State.Page : StateContext.State.MobilePage; return page; }
private List<string> GetCurrentMasters(ITabContext context, bool mobile) { var masters = new List<string>(); var getDisplayInfoForMasterMessages = context.GetMessages<StateRouteHandler.GetDisplayInfoForMaster.Message>(); var getMasterForDisplayInfoMessages = context.GetMessages<StateRouteHandler.GetMasterForDisplayInfo.Message>(); foreach (var getDisplayInfoForMasterMessage in getDisplayInfoForMasterMessages) masters.Add(getDisplayInfoForMasterMessage.Master); foreach (var getMasterForDisplayInfoMessage in getMasterForDisplayInfoMessages) masters.Add(getMasterForDisplayInfoMessage.Master); if (masters.Count == 0) masters = ((!mobile || (StateContext.State.MobilePage.Length == 0 && StateContext.State.MobileMasters.Count == 0)) ? StateContext.State.Masters : StateContext.State.MobileMasters).ToList(); return masters; }
private string GetCurrentTheme(ITabContext context, bool mobile) { string theme = null; var getDisplayInfoForThemeMessage = context.GetMessages<AlternateType.StateRouteHandler.GetDisplayInfoForTheme.Message>().FirstOrDefault(); var getThemeForDisplayInfoMessage = context.GetMessages<AlternateType.StateRouteHandler.GetThemeForDisplayInfo.Message>().FirstOrDefault(); if (getDisplayInfoForThemeMessage != null) theme = getDisplayInfoForThemeMessage.Theme; if (getThemeForDisplayInfoMessage != null) theme = getThemeForDisplayInfoMessage.Theme; if (theme == null) theme = (!mobile || (StateContext.State.MobilePage.Length == 0 && StateContext.State.MobileTheme.Length == 0)) ? StateContext.State.Theme : StateContext.State.MobileTheme; return theme; }
public override object GetData(ITabContext context) { var plugin = Plugin.Create("Level", "Timestamp", "Message", "Properties"); foreach (var item in context.GetMessages <LogEventItem>()) { var properties = item.LogEvent.Properties .Select(pv => new { Name = pv.Key, Value = GlimpsePropertyFormatter.Simplify(pv.Value) }) .ToList(); if (item.LogEvent.Exception != null) { properties.Add(new { Name = "Exception", Value = (object)item.LogEvent.Exception }); } properties = properties.OrderBy(p => p.Name).ToList(); var row = plugin.AddRow(); row.Column(item.LogEvent.Level.ToString()); row.Column(item.LogEvent.Timestamp.ToString("HH:mm:ss.fff", item.FormatProvider)); row.Column(item.LogEvent.RenderMessage(item.FormatProvider)).Strong(); row.Column(properties); ApplyRowLevelStyle(item.LogEvent.Level, row); } return(plugin); }
public override object GetData(ITabContext context) { var timelineMessages = context.GetMessages <ITimelineMessage>() .Where(m => m.EventName.StartsWith("WAZStorage:")).Cast <WindowsAzureStorageTimelineMessage>(); var model = new StorageModel(); if (timelineMessages != null) { model.Statistics.TotalStorageTx = timelineMessages.Count(); model.Statistics.TotalBlobTx = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Blob")); model.Statistics.TotalTableTx = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Table")); model.Statistics.TotalQueueTx = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Queue")); model.Statistics.TotalTrafficToStorage = timelineMessages.Sum(m => m.RequestSize).ToBytesHuman(); model.Statistics.TotalTrafficFromStorage = timelineMessages.Sum(m => m.ResponseSize).ToBytesHuman(); model.Statistics.PricePerTenThousandPageViews = string.Format("${0}", model.Statistics.TotalStorageTx * 1000 * 0.0000001 + timelineMessages.Sum(m => m.ResponseSize) * 10000 * (0.12 / 1024 / 1024 / 1024)); model.Requests = FlattenRequests(timelineMessages); model.Warnings = AnalyzeMessagesForWarnings(timelineMessages); return(model); } return("No storage transactions have been utilized for this request."); }
public object GetData(ITabContext context) { var messages = context.GetMessages <AdoMessage>().ToList(); var aggregator = new MessageAggregator(messages); var queryData = aggregator.Aggregate(); var queryCount = queryData.Commands.Count; var connectionCount = queryData.Connections.Count; var transactionCount = queryData.Transactions.Count; var queryExecutionTime = new TimeSpan(); var connectionOpenTime = new TimeSpan(); foreach (var command in queryData.Commands) { var commandMetadata = command.Value; queryExecutionTime += commandMetadata.Duration; } foreach (var connection in queryData.Connections) { var connectionMetadata = connection.Value; connectionOpenTime += connectionMetadata.Duration.GetValueOrDefault(TimeSpan.Zero); } return(new { queryCount, connectionCount, transactionCount, queryExecutionTime, connectionOpenTime }); }
public override object GetData(ITabContext context) { var plugin = Plugin.Create("Level", "Timestamp", "Message", "Properties"); foreach (var item in context.GetMessages<LogEventItem>()) { var properties = item.LogEvent.Properties .Select(pv => new { Name = pv.Key, Value = GlimpsePropertyFormatter.Simplify(pv.Value) }) .ToList(); if (item.LogEvent.Exception != null) properties.Add(new { Name = "Exception", Value = (object)item.LogEvent.Exception }); properties = properties.OrderBy(p => p.Name).ToList(); var row = plugin.AddRow(); row.Column(item.LogEvent.Level.ToString()); row.Column(item.LogEvent.Timestamp.ToString("HH:mm:ss.fff", item.FormatProvider)); row.Column(item.LogEvent.RenderMessage(item.FormatProvider)).Strong(); row.Column(properties); ApplyRowLevelStyle(item.LogEvent.Level, row); } return plugin; }
public override object GetData(ITabContext context) { var timelineMessages = context.GetMessages<ITimelineMessage>() .Where(m => m.EventName.StartsWith("WAZStorage:")).Cast<WindowsAzureStorageTimelineMessage>(); var model = new StorageModel(); if (timelineMessages != null) { model.Statistics.TotalStorageTx = timelineMessages.Count(); model.Statistics.TotalBlobTx = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Blob")); model.Statistics.TotalTableTx = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Table")); model.Statistics.TotalQueueTx = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Queue")); model.Statistics.TotalTrafficToStorage = timelineMessages.Sum(m => m.RequestSize).ToBytesHuman(); model.Statistics.TotalTrafficFromStorage = timelineMessages.Sum(m => m.ResponseSize).ToBytesHuman(); model.Statistics.PricePerTenThousandPageViews = string.Format("${0}", model.Statistics.TotalStorageTx * 1000 * 0.0000001 + timelineMessages.Sum(m => m.ResponseSize) * 10000 * (0.12 / 1024 / 1024 / 1024)); model.Requests = FlattenRequests(timelineMessages); model.Warnings = AnalyzeMessagesForWarnings(timelineMessages); return model; } return "No storage transactions have been utilized for this request."; }
public object GetData(ITabContext context) { return context.GetMessages<ITimelineMessage>() .Where(m => m.EventCategory.Name.Equals("Command") || (m.EventCategory.Name.Equals("Controller") && m.EventName.StartsWith("Controller:")) || m.EventCategory.Name.Equals("View")).OrderBy(m => m.Offset); }
public object GetData(ITabContext context) { return(context.GetMessages <ITimelineMessage>() .Where(m => m.EventCategory.Name.Equals("Command") || (m.EventCategory.Name.Equals("Controller") && m.EventName.StartsWith("Controller:")) || m.EventCategory.Name.Equals("View")).OrderBy(m => m.Offset)); }
public override object GetData(ITabContext context) { var viewEngineFindViewsMessages = context.GetMessages <ViewEngine.FindViews.Message>(); var viewRenderMessages = context.GetMessages <View.Render.Message>(); var result = new List <ViewsModel>(); if (viewEngineFindViewsMessages == null || viewRenderMessages == null) { return(result); } foreach (var findView in viewEngineFindViewsMessages) { result.Add(new ViewsModel(findView, viewRenderMessages.SingleOrDefault(r => r.ViewCorrelation.ViewEngineFindCallId == findView.Id))); } return(result); }
public override object GetData(ITabContext context) { var viewEngineFindViewsMessages = context.GetMessages<ViewEngine.FindViews.Message>(); var viewRenderMessages = context.GetMessages<View.Render.Message>(); var result = new List<ViewsModel>(); if (viewEngineFindViewsMessages == null || viewRenderMessages == null) { return result; } foreach (var findView in viewEngineFindViewsMessages) { result.Add(new ViewsModel(findView, viewRenderMessages.SingleOrDefault(r => r.ViewCorrelation.ViewEngineFindCallId == findView.Id))); } return result; }
public override object GetData(ITabContext context) { var routeMessages = ProcessMessages(context.GetMessages <RouteBase.GetRouteData.Message>()); var constraintMessages = ProcessMessages(context.GetMessages <RouteBase.ProcessConstraint.Message>()); var result = new List <RouteModel>(); using (System.Web.Routing.RouteTable.Routes.GetReadLock()) { foreach (var routeBase in System.Web.Routing.RouteTable.Routes) { var routeModel = GetRouteModelForRoute(context, routeBase, routeMessages, constraintMessages); result.Add(routeModel); } } return(result); }
public object GetData(ITabContext context) { var sessions = context.GetMessages<RavenDbSessionMessage>().Select(x => x.Id).ToArray(); var data = new List<object[]>(); data.Add(new object[] { "Key", "Value" }); data.Add(new object[] { "Stores", GetStoreList() }); data.Add(new object[] { "Sessions", GetSessionList(sessions) }); data.Add(new object[] { "Requests", GetRequestList(sessions) }); return data; }
public override object GetData(ITabContext context) { var messages = context.GetMessages <GlimpseMessage <ContentManagerMessage> >().ToList(); if (!messages.Any()) { return("There have been no Display Manager events recorded. If you think there should have been, check that the 'Glimpse for Orchard Content Manager' feature is enabled."); } return(messages); }
public override object GetData(ITabContext context) { var messages = context.GetMessages <ContentManagerGetMessage>().ToList(); if (!messages.Any()) { return(null); } return(messages); }
private string GetCurrentPage(ITabContext context, bool mobile) { string page = null; var getDisplayInfoForPageMessage = context.GetMessages <StateRouteHandler.GetDisplayInfoForPage.Message>().FirstOrDefault(); var getPageForDisplayInfoMessage = context.GetMessages <StateRouteHandler.GetPageForDisplayInfo.Message>().FirstOrDefault(); if (getDisplayInfoForPageMessage != null) { page = getDisplayInfoForPageMessage.Page; } if (getPageForDisplayInfoMessage != null) { page = getPageForDisplayInfoMessage.Page; } if (page == null) { page = (!mobile || StateContext.State.MobilePage.Length == 0) ? StateContext.State.Page : StateContext.State.MobilePage; } return(page); }
public override object GetData(ITabContext context) { var messages = context.GetMessages <GlimpseMessage <EnabledFeatureMessage> >().ToList(); if (messages.Any()) { return(messages); } return("There is no data available for this tab, check that the 'Glimpse for Orchard Enabled Features' feature is enabled."); }
public override object GetData(ITabContext context) { var routeMessages = ProcessMessages(context.GetMessages <RouteDataMessage>()); var constraintMessages = ProcessMessages(context.GetMessages <ProcessConstraintMessage>()); var result = new List <RouteModel>(); using (System.Web.Routing.RouteTable.Routes.GetReadLock()) { foreach (var routeBase in System.Web.Routing.RouteTable.Routes) { if (routeBase.GetType().ToString() == "System.Web.Mvc.Routing.LinkGenerationRoute") { continue; } if (routeBase.GetType().ToString() == "System.Web.Mvc.Routing.RouteCollectionRoute") { // This catches any routing that has been defined using Attribute Based Routing // System.Web.Http.Routing.RouteCollectionRoute is a collection of HttpRoutes var subRoutes = routeBase.GetType().GetField("_subRoutes", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(routeBase); var _routes = (IList <System.Web.Routing.Route>)subRoutes.GetType().GetField("_routes", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(subRoutes); for (var i = 0; i < _routes.Count; i++) { var routeModel = GetRouteModelForRoute(context, _routes[i], routeMessages, constraintMessages); result.Add(routeModel); } } else { var routeModel = GetRouteModelForRoute(context, routeBase, routeMessages, constraintMessages); result.Add(routeModel); } } } return(result); }
private string GetCurrentTheme(ITabContext context, bool mobile) { string theme = null; var getDisplayInfoForThemeMessage = context.GetMessages <StateRouteHandler.GetDisplayInfoForTheme.Message>().FirstOrDefault(); var getThemeForDisplayInfoMessage = context.GetMessages <StateRouteHandler.GetThemeForDisplayInfo.Message>().FirstOrDefault(); if (getDisplayInfoForThemeMessage != null) { theme = getDisplayInfoForThemeMessage.Theme; } if (getThemeForDisplayInfoMessage != null) { theme = getThemeForDisplayInfoMessage.Theme; } if (theme == null) { theme = (!mobile || (StateContext.State.MobilePage.Length == 0 && StateContext.State.MobileTheme.Length == 0)) ? StateContext.State.Theme : StateContext.State.MobileTheme; } return(theme); }
private List <string> GetCurrentMasters(ITabContext context, bool mobile) { var masters = new List <string>(); var getDisplayInfoForMasterMessages = context.GetMessages <StateRouteHandler.GetDisplayInfoForMaster.Message>(); var getMasterForDisplayInfoMessages = context.GetMessages <StateRouteHandler.GetMasterForDisplayInfo.Message>(); foreach (var getDisplayInfoForMasterMessage in getDisplayInfoForMasterMessages) { masters.Add(getDisplayInfoForMasterMessage.Master); } foreach (var getMasterForDisplayInfoMessage in getMasterForDisplayInfoMessages) { masters.Add(getMasterForDisplayInfoMessage.Master); } if (masters.Count == 0) { masters = ((!mobile || (StateContext.State.MobilePage.Length == 0 && StateContext.State.MobileMasters.Count == 0)) ? StateContext.State.Masters : StateContext.State.MobileMasters).ToList(); } return(masters); }
public object GetData(ITabContext context) { var sessions = context.GetMessages <RavenDbSessionMessage>().Select(x => x.Id).ToArray(); var data = new List <object[]>(); data.Add(new object[] { "Key", "Value" }); data.Add(new object[] { "Stores", GetStoreList() }); data.Add(new object[] { "Sessions", GetSessionList(sessions) }); data.Add(new object[] { "Requests", GetRequestList(sessions) }); return(data); }
internal DataAccessAggregator(ITabContext context) { rawMessages = new List <DataAccessMessage>(context.GetMessages <DataAccessMessage>()); aggregatedMessages = new List <DataAccessTabItem>(rawMessages.Count); Aggregate(); AggregateHints(); var broker = context.MessageBroker; foreach (var e in aggregatedMessages) { e.ToTimeline(broker); } }
public override object GetData(ITabContext context) { var plugin = Plugin.Create("Command", "Key", "Sent", "Size", "Received", "Size", "Expire", "Duration"); var messages = context.GetMessages <RedisTimelineMessage>().ToArray(); if (!messages.Any()) { return(null); } var ttl = Task.WhenAll(messages.Select(async x => { var conn = x.UsedSettings.GetConnection(); var db = conn.GetDatabase(x.UsedSettings.Db); var exists = await db.KeyExistsAsync(x.Key).ConfigureAwait(false); if (exists) { var v = await db.KeyTimeToLiveAsync(x.Key).ConfigureAwait(false); return((v.HasValue) ? v.Value.ToString(@"hh\:mm\:ss") : "-"); } else { return(null); } }).ToArray()).Result; var duplicatedKey = new HashSet <Tuple <string, RedisKey> >(); foreach (var item in messages.Zip(ttl, (message, expire) => new { message, expire })) { var message = item.message; var key = Tuple.Create(message.Command, message.Key); var columns = plugin.AddRow() .Column(message.Command) .Column((string)message.Key) .Column((message.SentObject == null) ? null : message.SentObject) .Column((message.SentObject == null) ? null : (long?)message.SentSize) .Column((message.ReceivedObject == null) ? null : message.ReceivedObject) .Column((message.ReceivedObject == null) ? null : (long?)message.ReceivedSize) .Column(item.expire) .Column(message.Duration); columns.WarnIf(duplicatedKey.Contains(key)); columns.ErrorIf(message.IsError); duplicatedKey.Add(key); } return(plugin); }
public override object GetData(ITabContext context) { var timelineMessages = context.GetMessages <ITimelineMessage>().Where(m => m.EventName.StartsWith("WAZCache:")); var model = new CachingModel(); if (timelineMessages != null) { // TODO: build useful data from this model.TotalSuccessful = timelineMessages.Count(); return(model); } return("No cache has been utilized for this request."); }
public object GetData(ITabContext context) { var section = Plugin.Create("Level", "Logger", "Message", "From Request Start", "From Last"); foreach (var item in context.GetMessages<NLogEventInfoMessage>()) { section.AddRow() .Column(string.Format("<span data-levelNum='{0}'>{1}</span>", item.LevelNumber, item.Level)).Raw() .Column(item.Logger) .Column(GetMessage(item.LogEvent)) .Column(item.FromFirst.TotalMilliseconds.ToString("0.00")) .Column(item.FromLast.TotalMilliseconds.ToString("0.00")) .Column(item) .ApplyRowStyle(StyleFromLevel(item.Level)); } return section.Build(); }
public override object GetData(ITabContext context) { var timelineMessages = context.GetMessages<ITimelineMessage>().Where(m => m.EventName.StartsWith("WAZCache:")); var model = new CachingModel(); if (timelineMessages != null) { // TODO: build useful data from this model.TotalSuccessful = timelineMessages.Count(); return model; } return "No cache has been utilized for this request."; }
public override object GetData(ITabContext context) { var messages = context.GetMessages<OperationCompletedEventMessage>().ToList(); var section = Core.Tab.Assist.Plugin.Create("Query", "Count", "Time"); foreach (var message in messages) { section.AddRow() .Column(message.Query) .Column(message.ResultCount) .Column(message.Time); } return section; }
public override object GetData(ITabContext context) { var hasRun = context.TabStore.Get("hasRun"); if (hasRun == null) { context.TabStore.Set("hasRun", "true"); // Make sure the traces are dumpted out to the normal trace stream writeToDiagnosticsTraceField.SetValue(null, true); return null; } var data = ProcessData(context.GetMessages<PageLifeCycleMessage>()); return data; }
public override object GetData(ITabContext context) { var messages = context.GetMessages <OperationCompletedEventMessage>().ToList(); var section = Core.Tab.Assist.Plugin.Create("Query", "Count", "Time"); foreach (var message in messages) { section.AddRow() .Column(message.Query) .Column(message.ResultCount) .Column(message.Time); } return(section); }
public object GetData(ITabContext context) { var messages = context.GetMessages<AdoMessage>().ToList(); var aggregator = new MessageAggregator(messages); var queryData = aggregator.Aggregate(); SqlStatistics sqlStatistics = SqlStatisticsCalculator.Caluculate(queryData); return new { queryCount = sqlStatistics.QueryCount, connectionCount = sqlStatistics.ConnectionCount, transactionCount = sqlStatistics.TransactionCount, queryExecutionTime = sqlStatistics.QueryExecutionTime, connectionOpenTime = sqlStatistics.ConnectionOpenTime }; }
public object GetData(ITabContext context) { var messages = context.GetMessages <AdoMessage>().ToList(); var aggregator = new MessageAggregator(messages); var queryData = aggregator.Aggregate(); SqlStatistics sqlStatistics = SqlStatisticsCalculator.Caluculate(queryData); return(new { queryCount = sqlStatistics.QueryCount, connectionCount = sqlStatistics.ConnectionCount, transactionCount = sqlStatistics.TransactionCount, queryExecutionTime = sqlStatistics.QueryExecutionTime, connectionOpenTime = sqlStatistics.ConnectionOpenTime }); }
public override object GetData(ITabContext context) { var viewRenderMessages = context.GetMessages <ITimelineMessage>(); var result = new TimelineModel(); result.Category = new Dictionary <string, TimelineCategoryModel>(); if (viewRenderMessages != null) { var maxEndPoint = TimeSpan.Zero; var events = new List <TimelineEventModel>(); foreach (var viewRenderMessage in viewRenderMessages.OrderBy(x => x.Offset)) { if (!result.Category.ContainsKey(viewRenderMessage.EventCategory.Name)) { result.Category[viewRenderMessage.EventCategory.Name] = new TimelineCategoryModel { EventColor = viewRenderMessage.EventCategory.Color, EventColorHighlight = viewRenderMessage.EventCategory.ColorHighlight }; } var timelineEvent = new TimelineEventModel(); timelineEvent.Title = viewRenderMessage.EventName; timelineEvent.Category = viewRenderMessage.EventCategory.Name; timelineEvent.SubText = viewRenderMessage.EventSubText; timelineEvent.Duration = viewRenderMessage.Duration; timelineEvent.StartPoint = viewRenderMessage.Offset; timelineEvent.StartTime = viewRenderMessage.StartTime; //// viewRenderMessage.BuildDetails(timelineEvent.Details); events.Add(timelineEvent); var endPoint = timelineEvent.EndPoint; if (endPoint > maxEndPoint) { maxEndPoint = endPoint; } } result.Events = events; result.Duration = maxEndPoint; } return(result); }
public override object GetData(ITabContext context) { var plugin = Plugin.Create("Command", "Key", "Sent", "Size", "Received", "Size", "Expire", "Duration"); var messages = context.GetMessages<RedisTimelineMessage>().ToArray(); if (!messages.Any()) return null; var ttl = Task.WhenAll(messages.Select(async x => { var conn = x.UsedSettings.GetConnection(); var db = conn.GetDatabase(x.UsedSettings.Db); var exists = await db.KeyExistsAsync(x.Key).ConfigureAwait(false); if (exists) { var v = await db.KeyTimeToLiveAsync(x.Key).ConfigureAwait(false); return (v.HasValue) ? v.Value.ToString(@"hh\:mm\:ss") : "-"; } else { return null; } }).ToArray()).Result; var duplicatedKey = new HashSet<Tuple<string, RedisKey>>(); foreach (var item in messages.Zip(ttl, (message, expire) => new { message, expire })) { var message = item.message; var key = Tuple.Create(message.Command, message.Key); var columns = plugin.AddRow() .Column(message.Command) .Column((string)message.Key) .Column((message.SentObject == null) ? null : message.SentObject) .Column((message.SentObject == null) ? null : (long?)message.SentSize) .Column((message.ReceivedObject == null) ? null : message.ReceivedObject) .Column((message.ReceivedObject == null) ? null : (long?)message.ReceivedSize) .Column(item.expire) .Column(message.Duration); columns.WarnIf(duplicatedKey.Contains(key)); columns.ErrorIf(message.IsError); duplicatedKey.Add(key); } return plugin; }
public object GetData(ITabContext context) { var section = Plugin.Create("Level", "Logger", "Message", "From Request Start", "From Last"); foreach (var item in context.GetMessages <NLogEventInfoMessage>()) { section.AddRow() .Column(string.Format("<span data-levelNum='{0}'>{1}</span>", item.LevelNumber, item.Level)).Raw() .Column(item.Logger) .Column(GetMessage(item.LogEvent)) .Column(item.FromFirst.TotalMilliseconds.ToString("0.00")) .Column(item.FromLast.TotalMilliseconds.ToString("0.00")) .Column(item) .ApplyRowStyle(StyleFromLevel(item.Level)); } return(section.Build()); }
public override object GetData(ITabContext context) { var hasRun = context.TabStore.Get("hasRun"); if (hasRun == null) { context.TabStore.Set("hasRun", "true"); //Make sure the traces are dumpted out to the normal trace stream writeToDiagnosticsTraceField.SetValue(null, true); return(null); } var data = ProcessData(context.GetMessages <PageLifeCycleMessage>()); return(data); }
public object GetData(ITabContext context) { var logEntries = context.GetMessages<WcfEntry>(); if (logEntries == null) return null; // Evaluate any expression trees logEntries = logEntries.ToArray(); var data = new List<object[]> {new object[] {"Timestamp", "Elapsed", "Action", "Request", "Response"}}; data.AddRange(logEntries.Select(log => new object[] { log.StartTime, log.Duration.Milliseconds, log.EventName, log.RequestBody, log.ResponseBody })); return data; }
public override object GetData(ITabContext context) { var viewRenderMessages = context.GetMessages<ITimelineMessage>(); var result = new TimelineModel(); result.Category = new Dictionary<string, TimelineCategoryModel>(); if (viewRenderMessages != null) { var maxEndPoint = TimeSpan.Zero; var events = new List<TimelineEventModel>(); foreach (var viewRenderMessage in viewRenderMessages.OrderBy(x => x.Offset)) { if (!result.Category.ContainsKey(viewRenderMessage.EventCategory.Name)) { result.Category[viewRenderMessage.EventCategory.Name] = new TimelineCategoryModel { EventColor = viewRenderMessage.EventCategory.Color, EventColorHighlight = viewRenderMessage.EventCategory.ColorHighlight }; } var timelineEvent = new TimelineEventModel(); timelineEvent.Title = viewRenderMessage.EventName; timelineEvent.Category = viewRenderMessage.EventCategory.Name; timelineEvent.SubText = viewRenderMessage.EventSubText; timelineEvent.Duration = viewRenderMessage.Duration; timelineEvent.StartPoint = viewRenderMessage.Offset; timelineEvent.StartTime = viewRenderMessage.StartTime; //// viewRenderMessage.BuildDetails(timelineEvent.Details); events.Add(timelineEvent); var endPoint = timelineEvent.EndPoint; if (endPoint > maxEndPoint) { maxEndPoint = endPoint; } } result.Events = events; result.Duration = maxEndPoint; } return result; }
public override object GetData(ITabContext context) { var messages = context.GetMessages <PartMessage>().ToList(); if (!messages.Any()) { return("There have been no Content Part Driver events recorded. If you think there should have been, check that the 'Glimpse for Orchard Content Part Drivers' feature is enabled."); } //var vm = new ContentDefinitionVM { // Content = new Dictionary<ContentTypeSummaryVM, IEnumerable<ContentPartSummaryVM>>() //}; //foreach (var contentItem in messages.Select(m=> new ContentTypeSummaryVM{ContentItemId = m.ContentItemId}).Distinct().ToList()) { // var scopedContentItem = contentItem; // vm.Content.Add(contentItem, messages.Where(m => m.ContentItemId == scopedContentItem.ContentItemId).Select(m=> new ContentPartSummaryVM{ContentPartType = m.ContentPartType})); //} return(messages); }
public override object GetData(ITabContext context) { var viewRenderMessages = context.GetMessages <View.Render.Message>(); var metadataResults = new List <MetadataItemModel>(); if (viewRenderMessages != null) { foreach (var viewRenderMessage in viewRenderMessages) { var metadata = viewRenderMessage.ModelMetadata; var item = new MetadataItemModel(); var propertyMetadata = new List <MetadataPropertyItemModel>(); item.Action = viewRenderMessage.ActionName; item.Controller = viewRenderMessage.ControllerName; if (metadata != null) { item.ModelMetadata = ProcessMetaData(metadata); item.Name = metadata.PropertyName; item.DisplayName = metadata.GetDisplayName(); item.Type = metadata.ModelType; if (metadata.Properties != null) { item.PropertyMetadata = propertyMetadata; foreach (var metadataProperty in metadata.Properties) { propertyMetadata.Add(new MetadataPropertyItemModel { Name = metadataProperty.PropertyName, DisplayName = metadataProperty.GetDisplayName(), Metadata = ProcessMetaData(metadataProperty), Type = metadataProperty.ModelType }); } } } metadataResults.Add(item); } } return(metadataResults); }
public object GetData(ITabContext context) { if (context == null) { return(string.Empty); } var messages = context.GetMessages <LogStatistic>(); if (messages == null) { return(string.Empty); } var data = Assist.Plugin.Create("Model Name", "Symbol Type", "Symbol Name", "Invocations", "Time"); var items = messages .GroupBy(m => new { m.ModelName, m.SymbolName, m.SymbolType }) .Select(g => new { g.FirstOrDefault()?.ModelName, g.FirstOrDefault()?.SymbolType, g.FirstOrDefault()?.SymbolName, Times = g.Count(), Time = g.Sum(m => m.Time) }) .OrderByDescending(o => o.Time); foreach (var msg in items) { data.AddRow() .Column(msg.ModelName).Strong() .Column(msg.SymbolType.ToString()) .Column(msg.SymbolName) .Column(msg.Times) .Column(msg.Time + "ms"); } return(data); }
public override object GetData(ITabContext context) { var logEntries = context.GetMessages<LoggingEventMessage>(); if (logEntries == null) return null; // Evaluate any expression trees logEntries = logEntries.ToArray(); var data = new List<object[]>(); // Only include the full log entry when there is a reasonable // number of log messages var includeDetails = logEntries.Count() < MaxDetailedLogs; if (includeDetails) { data.Add(new[] { "Level", "Timestamp", "Message", "Log Entry" }); data.AddRange(logEntries.Select(log => new object[] { log.LevelName, log.TimeStamp, log.Message, log, GetStyle(log.LevelValue), })); } else { data.Add(new[] { "Level", "Timestamp", "Message" }); data.AddRange(logEntries.Select(log => new object[] { log.LevelName, log.TimeStamp, log.Message, GetStyle(log.LevelValue), })); } return data; }
public override object GetData(ITabContext context) { var viewRenderMessages = context.GetMessages<View.Render.Message>(); var metadataResults = new List<MetadataItemModel>(); if (viewRenderMessages != null) { foreach (var viewRenderMessage in viewRenderMessages) { var metadata = viewRenderMessage.ModelMetadata; var item = new MetadataItemModel(); var propertyMetadata = new List<MetadataPropertyItemModel>(); item.Action = viewRenderMessage.ActionName; item.Controller = viewRenderMessage.ControllerName; if (metadata != null) { item.ModelMetadata = ProcessMetaData(metadata); item.Name = metadata.PropertyName; item.DisplayName = metadata.GetDisplayName(); item.Type = metadata.ModelType; if (metadata.Properties != null) { item.PropertyMetadata = propertyMetadata; foreach (var metadataProperty in metadata.Properties) { propertyMetadata.Add(new MetadataPropertyItemModel { Name = metadataProperty.PropertyName, DisplayName = metadataProperty.GetDisplayName(), Metadata = ProcessMetaData(metadataProperty), Type = metadataProperty.ModelType }); } } } metadataResults.Add(item); } } return metadataResults; }
public override object GetData(ITabContext context) { var plugin = Plugin.Create("Command", "Key", "Sent", "Received", "Duration"); // <Command, Key> var duplicatedKey = new HashSet <Tuple <string, string> >(); foreach (var message in context.GetMessages <RedisTimelineMessage>()) { var key = Tuple.Create(message.Command, message.Key); var columns = plugin.AddRow() .Column(message.Command) .Column(message.Key) .Column((message.SendObject == null) ? null : JsonConvert.SerializeObject(message.SendObject)) .Column((message.ReceivedObject == null) ? null : JsonConvert.SerializeObject(message.ReceivedObject ?? "")) .Column(message.Duration); columns.WarnIf(!duplicatedKey.Add(key)); columns.ErrorIf(message.IsError); } return(plugin); }
public override object GetData(ITabContext context) { var plugin = Plugin.Create("Command", "Key", "Sent", "Received", "Duration"); // <Command, Key> var duplicatedKey = new HashSet<Tuple<string, string>>(); foreach (var message in context.GetMessages<RedisTimelineMessage>()) { var key = Tuple.Create(message.Command, message.Key); var columns = plugin.AddRow() .Column(message.Command) .Column(message.Key) .Column((message.SendObject == null) ? null : JsonConvert.SerializeObject(message.SendObject)) .Column((message.ReceivedObject == null) ? null : JsonConvert.SerializeObject(message.ReceivedObject ?? "")) .Column(message.Duration); columns.WarnIf(!duplicatedKey.Add(key)); columns.ErrorIf(message.IsError); } return plugin; }
public override object GetData(ITabContext context) { var processStart = context.GetMessages <ProcessStartMessage>().FirstOrDefault(); var interrupt = context.GetMessages <InterruptMessage>().FirstOrDefault(); var operationContext = context.GetMessages <OperationContext>().FirstOrDefault(); var filterResult = context.GetMessages <LightNodeFilterResultMessage>(); var executeResult = context.GetMessages <LightNodeExecuteResultMessage>().FirstOrDefault(); if (processStart == null) { return(null); } var environment = processStart.Environment; var response = new Response { OutputContentFormatter = (executeResult != null) ? executeResult.UsedContentFormatter.GetType().Name : null, StatusCode = environment.AsResponseStatusCode(), ReasonPhrase = environment.AsResponseReasonPhrase(), ResponseHeaders = environment.AsResponseHeaders() }; var execution = new List <Execution>(); foreach (var item in filterResult.Where(x => x.Phase == OperationPhase.Before)) { execution.Add(new Execution { Order = item.Order, Name = item.FilterName, Phase = item.Phase.ToString(), Elapsed = item.Duration.TotalMilliseconds + " ms", FromRequestStart = "T+ " + item.FromRequestStart.TotalMilliseconds + " ms" }); } ; if (executeResult != null) { execution.Add(new Execution { Name = operationContext.ToString(), Elapsed = executeResult.Duration.TotalMilliseconds + " ms", FromRequestStart = "T+ " + executeResult.FromRequestStart.TotalMilliseconds + " ms", Phase = executeResult.Phase.ToString() }); } foreach (var item in filterResult.Where(x => x.Phase == OperationPhase.After || x.Phase == OperationPhase.Exception || x.Phase == OperationPhase.ReturnStatusCode)) { execution.Add(new Execution { Order = item.Order, Name = item.FilterName, Phase = item.Phase.ToString(), Elapsed = item.Duration.TotalMilliseconds + " ms", FromRequestStart = "T+ " + item.FromRequestStart.TotalMilliseconds + " ms" }); } var option = (executeResult != null) ? executeResult.Options : processStart.Options; var globalFilter = string.Join(", ", option.Filters.Select(x => x.GetType().Name)); var specifiedFormatters = string.Join(", ", option.SpecifiedFormatters.Select(x => x.GetType().Name)); return(new LightNodeTabResult { Path = (operationContext != null) ? operationContext.ToString() : environment.AsRequestPath(), Parameters = (operationContext != null) ? operationContext.ParameterNames.Zip(operationContext.Parameters, (x, y) => new { x, y }).ToDictionary(x => x.x, x => x.y) : null, Result = (executeResult != null) ? executeResult.Result : (interrupt != null) ? interrupt.Reason + System.Environment.NewLine + interrupt.Detail : null, Execution = execution, Response = response, Options = new Options { DefaultAcceptVerb = option.DefaultAcceptVerb.ToString(), ErrorHandlingPolicy = option.ErrorHandlingPolicy.ToString(), DefaultFormatter = option.DefaultFormatter.GetType().Name, GlobalFilters = string.IsNullOrWhiteSpace(globalFilter) ? null : globalFilter, SpecifiedFormatters = string.IsNullOrWhiteSpace(specifiedFormatters) ? null : specifiedFormatters, OperationCoordinatorFactory = option.OperationCoordinatorFactory.GetType().Name, OperationMissingHandlingPolicy = option.OperationMissingHandlingPolicy.ToString(), ParameterEnumAllowsFieldNameParse = option.ParameterEnumAllowsFieldNameParse, ParameterStringImplicitNullAsDefault = option.ParameterStringImplicitNullAsDefault, StreamWriteOption = option.StreamWriteOption.ToString(), UseOtherMiddleware = option.UseOtherMiddleware } }); }
public override object GetData(ITabContext context) { var commands = context.GetMessages<CommandTimelineMessage>().ToArray(); if (!commands.Any()) { return null; } var ordinal = 1; var duplicationKeys = new HashSet<string>(); var duplicationCount = 0; var queries = new TabSection("Ordinal", "Database", "Command", "Parameters", "CommandType", "With Transaction", "Records", "IsError", "Duration", "Offset"); foreach (var command in commands) { var parameters = new TabSection("Name", "Value", "DbType", "Direction"); foreach (var parameter in command.Parameters) { parameters.AddRow() .Column(parameter.ParameterName) .Column(parameter.Value) .Column(parameter.DbType.ToString()) .Column(parameter.Direction.ToString()); } var row = queries.AddRow() .Column(ordinal) .Column(command.Database) .Column(command.CommandText) .Column(command.Parameters.Any() ? parameters : null) .Column(command.CommandType.ToString()) .Column(command.WithTransaction) .Column(command.Records ?? 0) .Column(command.IsError) .Column(command.Duration) .Column(command.Offset); var isDuplicated = !duplicationKeys.Add(command.CommandText); if (isDuplicated) { row.WarnIf(true); duplicationCount++; } ordinal++; } var sqlStatistics = new TabSection("Queries", "Duplication", "Total Query Duration"); sqlStatistics.AddRow() .Column(commands.Length) .Column(duplicationCount) .Column(commands.Select(x => x.Duration).Aggregate((x, y) => x.Add(y))); var root = new TabObject(); root.AddRow().Key("SQL Statistics").Value(sqlStatistics); root.AddRow().Key("Queries").Value(queries); return root.Build(); }
public override object GetData(ITabContext context) { var connectionLifetimes = context.GetMessages<ConnectionLifetimeTimelineMessage>().ToArray(); var transactionLifetimes = context.GetMessages<TransactionLifetimeTimelineMessage>().ToArray(); var transactionEvents = context.GetMessages<TransactionEventTimelineMessage>().ToArray(); var commands = context.GetMessages<CommandTimelineMessage>().ToArray(); var statisticsSection = new TabSection("Database", "Queries", "Total Transaction Duration"); var eventSection = new TabSection("Database", "Events", "Queries", "IsCommited", "Total Duration"); // Statistics foreach (var transactionLifetime in transactionLifetimes.OrderBy(x => x.Offset).ToArray()) { statisticsSection.AddRow() .Column(connectionLifetimes.First(x => x.ConnectionId == transactionLifetime.ConnectionId).Database) .Column(commands.Count(x => x.TransactionId.HasValue && x.TransactionId.Value == transactionLifetime.TransactionId)) .Column(transactionLifetime.Duration); } // Events foreach (var transactionLifetime in transactionLifetimes.OrderBy(x => x.Offset).ToArray()) { var queries = commands .Where(x => x.TransactionId.HasValue && x.TransactionId.Value == transactionLifetime.TransactionId) .ToArray(); var events = transactionEvents .Where(x => x.TransactionId == transactionLifetime.TransactionId) .Select(x => new { EventType = "Transaction", EventName = x.TransactionEvent.ToString(), Duration = x.Duration, Offset = x.Offset }) .Concat(queries .Select(x => new { EventType = "Command", EventName = x.CommandText, Duration = x.Duration, Offset = x.Offset }) ) .OrderBy(x => x.Offset) .ToArray(); var eventDetailSection = new TabSection("EventType", "EventName", "Duration", "Offset"); var duplicatedKeys = new HashSet<string>(); foreach (var @event in events) { var row = eventDetailSection.AddRow() .Column(@event.EventType) .Column(@event.EventName) .Column(@event.Duration) .Column(@event.Offset); if (@event.EventType == "Command") { row.WarnIf(!duplicatedKeys.Add(@event.EventName)); } } eventSection.AddRow() .Column(transactionLifetime.Database) .Column(eventDetailSection) .Column(commands.Length) .Column(transactionLifetime.IsCommited) .Column(transactionLifetime.Duration); } var root = new TabObject(); root.AddRow().Key("Transaction Statistics").Value(statisticsSection); root.AddRow().Key("Transaction Events").Value(eventSection); return root.Build(); }
public override object GetData(ITabContext context) { List<GlimpseMail> m = context.GetMessages<GlimpseMail>().ToList(); return m; }
public override object GetData(ITabContext context) { return context.GetMessages<ComponentModelMessage>().ToList(); }
public object GetData(ITabContext context) { if (context == null) return string.Empty; var messages = context.GetMessages<LogStatistic>(); if (messages == null) return string.Empty; var logParser = new LogParser(); var logStatistics = messages as LogStatistic[] ?? messages.ToArray(); var stat = logParser.Transform(logStatistics); if (stat == null) return string.Empty; var headerSection = new TabSection("Selects", "Inserts", "Updates", "Deletes", "Batch Commands"); headerSection.AddRow() .Column((stat.Selects > 50) ? string.Format("{0} - (ONLY FIRST 50 DISPLAYED)", stat.Selects) : stat.Selects.ToString(CultureInfo.InvariantCulture)).Strong() .Column(stat.Inserts) .Column(stat.Updates) .Column(stat.Deletes) .Column(stat.Batch) .ErrorIf(stat.Selects > 50); var detailSection = new TabSection("Log"); var sqlCount = 0; var inLoadLog = false; var loaded = 0; foreach (var item in logStatistics) { if (sqlCount == 50) break; if (!string.IsNullOrEmpty(item.CommandNotification)) { inLoadLog = false; detailSection.AddRow().Column(string.Format("!<span style='color:Red;'>Command: {0}</span>!", item.CommandNotification.Trim())); continue; } if (!string.IsNullOrEmpty(item.ConnectionNotification)) { inLoadLog = false; detailSection.AddRow().Column(string.Format("!<span style='color:Teal;'>Connection: {0}</span>!", item.ConnectionNotification.Trim())); continue; } if (!string.IsNullOrEmpty(item.FlushNotification)) { inLoadLog = false; detailSection.AddRow().Column(string.Format("!<span style='color:DarkSlateGray;'>Flush: {0}</span>!", item.FlushNotification.Trim())); continue; } if (!string.IsNullOrEmpty(item.LoadNotification)) { if (inLoadLog) { loaded += 1; } else { inLoadLog = true; loaded = 1; } if (loaded < 50) { detailSection.AddRow().Column(string.Format("!<span style='color:DarkSlateBlue;'>Load: {0}</span>!", item.LoadNotification.Trim())); } if (loaded == 50) { detailSection.AddRow().Column("ENTITY LOAD STATS TRUNCATED DUE TO NUMBER OF ENTITIES").Warn(); } continue; } if (!string.IsNullOrEmpty(item.TransactionNotification)) { inLoadLog = false; detailSection.AddRow().Column(string.Format("!<span style='color:Darkorange;'>Transaction: {0}</span>!", item.TransactionNotification.Trim())); continue; } if (!string.IsNullOrEmpty(item.Sql)) { inLoadLog = false; detailSection .AddRow() .Column(string.Format("!<div style='color:RoyalBlue ;'>{0}</div><code class='prettyprint glimpse-code' data-codeType='sql'>{1}</code>!", item.Id, item.Sql)) .Selected(); sqlCount += 1; } var stackFrames = new TabSection("Stack Trace"); if (item.StackFrames != null && item.StackFrames.Count > 0) { foreach (var stackFrame in item.StackFrames) { stackFrames.AddRow().Column(stackFrame); } detailSection.AddRow().Column(stackFrames); } } var data = Assist.Plugin.Create("Section", "Content"); data.AddRow().Column("Request Summary").Column(headerSection); data.AddRow().Column("Request Details").Column(detailSection); if (!SessionFactories.Any(f => f.Statistics.IsStatisticsEnabled)) return data; foreach (var sessionFactory in SessionFactories) { var factoryDetailSection = new TabSection("Statistic", "Value"); factoryDetailSection.AddRow().Column("Close Statement Count").Column(sessionFactory.Statistics.CloseStatementCount); factoryDetailSection.AddRow().Column("Collection Fetch Count").Column(sessionFactory.Statistics.CollectionFetchCount); factoryDetailSection.AddRow().Column("Collection Load Count").Column(sessionFactory.Statistics.CollectionLoadCount); factoryDetailSection.AddRow().Column("Collection Recreate Count").Column(sessionFactory.Statistics.CollectionRecreateCount); factoryDetailSection.AddRow().Column("Collection Remove Count").Column(sessionFactory.Statistics.CollectionRemoveCount); factoryDetailSection.AddRow().Column("Collection Role Names").Column(sessionFactory.Statistics.CollectionRoleNames); factoryDetailSection.AddRow().Column("Collection Update Count").Column(sessionFactory.Statistics.CollectionUpdateCount); factoryDetailSection.AddRow().Column("Connect Count").Column(sessionFactory.Statistics.ConnectCount); factoryDetailSection.AddRow().Column("Entity Delete Count").Column(sessionFactory.Statistics.EntityDeleteCount); factoryDetailSection.AddRow().Column("Entity Fetch Count").Column(sessionFactory.Statistics.EntityFetchCount); factoryDetailSection.AddRow().Column("Entity Insert Count").Column(sessionFactory.Statistics.EntityInsertCount); factoryDetailSection.AddRow().Column("Entity Load Count").Column(sessionFactory.Statistics.EntityLoadCount); factoryDetailSection.AddRow().Column("Entity Names").Column(sessionFactory.Statistics.EntityNames); factoryDetailSection.AddRow().Column("Entity Update Count").Column(sessionFactory.Statistics.EntityUpdateCount); factoryDetailSection.AddRow().Column("Flush Count").Column(sessionFactory.Statistics.FlushCount); factoryDetailSection.AddRow().Column("Optimistic Failure Count").Column(sessionFactory.Statistics.OptimisticFailureCount); factoryDetailSection.AddRow().Column("Prepare Statement Count").Column(sessionFactory.Statistics.PrepareStatementCount); factoryDetailSection.AddRow().Column("Queries").Column(sessionFactory.Statistics.Queries); factoryDetailSection.AddRow().Column("Query Cache Hit Count").Column(sessionFactory.Statistics.QueryCacheHitCount); factoryDetailSection.AddRow().Column("Query Cache Miss Count").Column(sessionFactory.Statistics.QueryCacheMissCount); factoryDetailSection.AddRow().Column("Query Cache Put Count").Column(sessionFactory.Statistics.QueryCachePutCount); factoryDetailSection.AddRow().Column("Query Execution Count").Column(sessionFactory.Statistics.QueryExecutionCount); factoryDetailSection.AddRow().Column("Query Execution Max Time").Column(sessionFactory.Statistics.QueryExecutionMaxTime); factoryDetailSection.AddRow().Column("Query Execution Max Time QueryString").Column(sessionFactory.Statistics.QueryExecutionMaxTimeQueryString); factoryDetailSection.AddRow().Column("Second Level Cache Hit Count").Column(sessionFactory.Statistics.SecondLevelCacheHitCount); factoryDetailSection.AddRow().Column("Second Level Cache Miss Count").Column(sessionFactory.Statistics.SecondLevelCacheMissCount); factoryDetailSection.AddRow().Column("Second Level Cache Put Count").Column(sessionFactory.Statistics.SecondLevelCachePutCount); factoryDetailSection.AddRow().Column("Second Level Cache Region Names").Column(sessionFactory.Statistics.SecondLevelCacheRegionNames); factoryDetailSection.AddRow().Column("Session Close Count").Column(sessionFactory.Statistics.SessionCloseCount); factoryDetailSection.AddRow().Column("Session Open Count").Column(sessionFactory.Statistics.SessionOpenCount); factoryDetailSection.AddRow().Column("Start Time").Column(sessionFactory.Statistics.StartTime); factoryDetailSection.AddRow().Column("Successful Transaction Count").Column(sessionFactory.Statistics.SuccessfulTransactionCount); factoryDetailSection.AddRow().Column("Transaction Count").Column(sessionFactory.Statistics.TransactionCount); var impl = sessionFactory as SessionFactoryImpl; data.AddRow().Column(string.Format("Factory: {0}", (impl == null) ? string.Empty : impl.Uuid)).Column(factoryDetailSection); } return data; }
public override object GetData(ITabContext context) { var activity = context.GetMessages<Messages.ConnectionActivity>().ToList(); return activity.Any() ? activity : null; }
public override object GetData(ITabContext context) { return(context.GetMessages <GlimpseMessage <CacheMessage> >()); }
public object GetData(ITabContext context) { var data = ProcessData(context.GetMessages<PageLifeCycleMessage>(), context); return data; }
public override object GetData(ITabContext context) { var messages = context.GetMessages<AdomdMessage>().ToList(); var aggregator = new MessageAggregator(messages); var metadata = aggregator.Aggregate(); if (metadata == null) { return null; } var connections = new List<object[]> { new object[] { "Commands per Connection", "Duration" } }; foreach (var connection in metadata.Connections.Values) { if (connection.Commands.Count == 0 && connection.Transactions.Count == 0) { continue; } var commands = new List<object[]> { new object[] { "Transaction Start", "Ordinal", "Command", "Parameters", "Duration", "Offset", "Transaction End", "Errors" } }; var commandCount = 1; foreach (var command in connection.Commands.Values) { // Transaction Start List<object[]> headTransaction = null; if (command.HeadTransaction != null) { headTransaction = new List<object[]> { new object[] { "\t▼ Transaction - Started", "Isolation Level - " + command.HeadTransaction.IsolationLevel } }; if (!command.HeadTransaction.Committed.HasValue) { headTransaction.Add(new object[] { string.Empty, "Transaction was never completed", "error" }); } } // Transaction Finish List<object[]> tailTransaction = null; if (command.TailTransaction != null) { tailTransaction = new List<object[]> { new object[] { "\t▲ Transaction - Finished", "Status - " + (command.TailTransaction.Committed.GetValueOrDefault() ? "Committed" : "Rollbacked") } }; } // Parameters List<object[]> parameters = null; if (command.Parameters.Count > 0) { parameters = new List<object[]> { new object[] { "Name", "Value"} }; foreach (var parameter in command.Parameters) { parameters.Add(new[] { parameter.Name, parameter.Value }); } } // Exception List<object[]> errors = null; if (command.Exception != null) { var exception = command.Exception.GetBaseException(); var exceptionName = command.Exception != exception ? command.Exception.Message + ": " + exception.Message : exception.Message; errors = new List<object[]> { new object[] { "Error", "Stack" }, new object[] { exceptionName, exception.StackTrace } }; } // Commands var records = command.RecordsAffected == null || command.RecordsAffected < 0 ? command.TotalRecords : command.RecordsAffected; var status = string.Empty; commands.Add(new object[] { headTransaction, string.Format("{0}{1}", command.HasTransaction ? "\t\t\t" : string.Empty, commandCount++), command.Command, parameters, command.Duration, command.Offset, tailTransaction, errors, status }); } connections.Add(new[] { commands, connection.Duration.HasValue ? (object)connection.Duration.Value : null }); } if (connections.Count > 1) { var statistics = MdxStatisticsBuilder.Build(metadata); return new Dictionary<string, object>() { { "MDX Statistics", new object[] { new { statistics.ConnectionCount, statistics.QueryCount, statistics.TransactionCount, statistics.QueryExecutionTime, statistics.ConnectionOpenTime } } }, {"Queries", connections} }; } return null; }
/// <summary> /// Gets the data that should be shown in the UI. /// </summary> /// <param name="context">The context.</param> /// <returns>Object that will be shown.</returns> public object GetData(ITabContext context) { var data = new List<object>(); var telemetryMessages = context.GetMessages<ITelemetry>(); foreach (var telemetry in telemetryMessages) { if (telemetry is TraceTelemetry) { var trace = new TraceTelemetryMessage(telemetry as TraceTelemetry); data.Add(trace); } if (telemetry is DependencyTelemetry) { var dependency = new DependencyTelemetryMessage(telemetry as DependencyTelemetry); data.Add(dependency); } if (telemetry is EventTelemetry) { var tevent = new EventTelemetryMessage(telemetry as EventTelemetry); data.Add(tevent); } if (telemetry is ExceptionTelemetry) { var exception = new ExceptionTelemetryMessage(telemetry as ExceptionTelemetry); data.Add(exception); } if (telemetry is RequestTelemetry) { var request = new RequestTelemetryMessage(telemetry as RequestTelemetry); data.Add(request); } } // This is a temporary fix that allows to show request telemetry object inside Application Insights tab // The issue here is that ApplicationInsights's End callback that produces request telemetry object will be called after // Glimpse's EndRequest method that will populate all request details. See github issue #17 for details: // https://github.com/Glimpse/Glimpse.ApplicationInsights/issues/17 // Long term we might need to switch Application Insights tab from showing request-specific telemetry to show all telemetry // like history tab does with the ability to var requestTelemetry = System.Web.HttpContext.Current.Items["Microsoft.ApplicationInsights.RequestTelemetry"] as RequestTelemetry; if (requestTelemetry != null) { HttpContext ctx = HttpContext.Current; if (ctx != null) { requestTelemetry.ResponseCode = ctx.Response.StatusCode.ToString(CultureInfo.InvariantCulture); requestTelemetry.Success = (ctx.Response.StatusCode < 400) || (ctx.Response.StatusCode == 401); requestTelemetry.Url = ctx.Request.Unvalidated.Url; } foreach (var initializer in TelemetryConfiguration.Active.TelemetryInitializers) { initializer.Initialize(requestTelemetry); } data.Add(new RequestTelemetryMessage(requestTelemetry)); } return data; }
public override object GetData(ITabContext context) { IList<JsonModel> data = context.GetMessages<JsonTraceMessage>().Select(m => new JsonModel(m)).ToList(); return data; }
public override object GetData(ITabContext context) { var sanitizer = new CommandSanitizer(); var messages = context.GetMessages<AdoMessage>().ToList(); var aggregator = new MessageAggregator(messages); var queryMetadata = aggregator.Aggregate(); if (queryMetadata == null) { return null; } var connections = new List<object[]> { new object[] { "Commands per Connection", "Duration" } }; foreach (var connection in queryMetadata.Connections.Values) { if (connection.Commands.Count == 0 && connection.Transactions.Count == 0) { continue; } var commands = new List<object[]> { new object[] { "Transaction Start", "Ordinal", "Command", "Parameters", "Records", "Duration", "Offset", "Async", "Transaction End", "Errors" } }; var commandCount = 1; foreach (var command in connection.Commands.Values) { // Transaction Start List<object[]> headTransaction = null; if (command.HeadTransaction != null) { headTransaction = new List<object[]> { new object[] { "\t▼ Transaction - Started", "Isolation Level - " + command.HeadTransaction.IsolationLevel } }; if (!command.HeadTransaction.Committed.HasValue) { headTransaction.Add(new object[] { string.Empty, "Transaction was never completed", "error" }); } } // Transaction Finish List<object[]> tailTransaction = null; if (command.TailTransaction != null) { tailTransaction = new List<object[]> { new object[] { "\t▲ Transaction - Finished", "Status - " + (command.TailTransaction.Committed.GetValueOrDefault() ? "Committed" : "Rollbacked") } }; } // Parameters List<object[]> parameters = null; if (command.Parameters.Count > 0) { parameters = new List<object[]> { new object[] { "Name", "Value", "Type", "Size" } }; foreach (var parameter in command.Parameters) { parameters.Add(new[] { parameter.Name, parameter.Value, parameter.Type, parameter.Size }); } } else if (command.BatchParameters.Count > 0) { parameters = new List<object[]>(command.BatchParameters.Count + 1); parameters.Add(new object[] { "#", "Name", "Value", "Type", "Size" }); for(int i = 0; i < command.BatchParameters.Count; i++) { foreach(var parameter in command.BatchParameters[i]) { parameters.Add(new object[] { i, parameter.Name, parameter.Value, parameter.Type, parameter.Size }); } } } // Exception List<object[]> errors = null; if (command.Exception != null) { var exception = command.Exception.GetBaseException(); var exceptionName = command.Exception != exception ? command.Exception.Message + ": " + exception.Message : exception.Message; errors = new List<object[]> { new object[] { "Error", "Stack" }, new object[] { exceptionName, exception.StackTrace } }; } // Commands var records = command.RecordsAffected == null || command.RecordsAffected < 0 ? command.TotalRecords : command.RecordsAffected; var status = errors != null ? "error" : (command.IsDuplicate ? "warn" : string.Empty); commands.Add(new object[] { headTransaction, string.Format("{0}{1}", command.HasTransaction ? "\t\t\t" : string.Empty, commandCount++), sanitizer.Process(command.Command, command.Parameters), parameters, records, command.Duration, command.Offset, command.IsAsync, tailTransaction, errors, status }); } connections.Add(new[] { commands, connection.Duration.HasValue ? (object)connection.Duration.Value : null }); } if (connections.Count > 1) { SqlStatistics sqlStatistics = SqlStatisticsCalculator.Caluculate(queryMetadata); return new Dictionary<string, object> { { "SQL Statistics", new object[] { new { sqlStatistics.ConnectionCount, sqlStatistics.QueryCount, sqlStatistics.TransactionCount, sqlStatistics.QueryExecutionTime, sqlStatistics.ConnectionOpenTime } } }, { "Queries", connections } }; } return null; }