public WindowsAzureStorageTimelineMessage(string serviceName, string serviceOperation, string resourceUri, int responseCode, DateTime startTime, DateTime endTime, TimeSpan offset, RequestEventArgs requestEventArgs) { Id = Guid.NewGuid(); EventName = string.Format("WAZStorage:{0} - {1} {2} {3}", serviceName, serviceOperation, resourceUri, responseCode); EventCategory = new TimelineCategoryItem("Windows Azure Storage", "#0094FF", "#0094FF"); ServiceName = serviceName; ServiceOperation = serviceOperation; Url = resourceUri; ResponseCode = responseCode; StartTime = startTime; Duration = endTime - startTime; Offset = offset; RequestSize = requestEventArgs.Request.ContentLength; foreach (var header in requestEventArgs.Request.Headers.AllKeys) { RequestSize += header.Length + 2 + string.Join(";", requestEventArgs.Request.Headers.GetValues(header)).Length; } ResponseSize = requestEventArgs.Response.ContentLength; foreach (var header in requestEventArgs.Response.Headers.AllKeys) { ResponseSize += header.Length + 2 + string.Join(";", requestEventArgs.Response.Headers.GetValues(header)).Length; } RequestHeaders = requestEventArgs.Request.Headers; ResponseHeaders = requestEventArgs.Request.Headers; EventSubText = string.Format("out: {0}/in: {1}", RequestSize.ToBytesHuman(), ResponseSize.ToBytesHuman()); }
public TimerResult PublishTimedAction(Action action, TimelineCategoryItem category, string eventName, string eventSubText = null) { var timedResult = Time(action); PublishMessage(new TimelineMessage { EventName = eventName, EventCategory = category, EventSubText = eventSubText }.AsTimedMessage(timedResult)); return(timedResult); }
public TimedActionResult <T> PublishTimedAction <T>(Func <T> action, TimelineCategoryItem category, string eventName, string eventSubText = null, Func <T, bool> publishCondition = null) { var timedResult = Time(action); if (publishCondition == null || publishCondition(timedResult.ActionResult)) { PublishMessage(new TimelineMessage { EventName = eventName, EventCategory = category, EventSubText = eventSubText }.AsTimedMessage(timedResult.TimerResult)); } return(timedResult); }
public TimelineMessage(string eventName, string appName, TimerResult result) { Id = Guid.NewGuid(); EventName = eventName; if (!Mappings.ContainsKey(appName)) { Mappings[appName] = new TimelineCategoryItem(appName, "green", "blue"); } EventCategory = Mappings[appName]; Offset = result.Offset; StartTime = result.StartTime; Duration = result.Duration; }
internal static void CaptureMoment(string eventName, string eventSubText, TimelineCategoryItem category, ITimelineMessage message) { if (string.IsNullOrEmpty(eventName)) { throw new ArgumentNullException("eventName"); } #pragma warning disable 618 var executionTimer = GlimpseConfiguration.GetConfiguredTimerStrategy()(); var messageBroker = GlimpseConfiguration.GetConfiguredMessageBroker(); #pragma warning restore 618 if (executionTimer == null || messageBroker == null) { return; } message .AsTimelineMessage(eventName, category, eventSubText) .AsTimedMessage(executionTimer.Point()); messageBroker.Publish(message); }
public Message(string cacheName, string operationType)//, DateTime startTime, DateTime endTime, TimeSpan offset) { Id = Guid.NewGuid(); EventName = string.Format("WAZCache:{0}:{1}", cacheName, operationType); EventCategory = new TimelineCategoryItem("Windows Azure Caching", "#0094FF", "#0094FF"); //StartTime = startTime; //Duration = endTime - startTime; //Offset = offset; //RequestSize = requestEventArgs.Request.ContentLength; //foreach (var header in requestEventArgs.Request.Headers.AllKeys) //{ // RequestSize += header.Length + 2 + string.Join(";", requestEventArgs.Request.Headers.GetValues(header)).Length; //} //ResponseSize = requestEventArgs.Response.ContentLength; //foreach (var header in requestEventArgs.Response.Headers.AllKeys) //{ // ResponseSize += header.Length + 2 + string.Join(";", requestEventArgs.Response.Headers.GetValues(header)).Length; //} //EventSubText = string.Format("out: {0}/in: {1}", RequestSize.ToBytesHuman(), ResponseSize.ToBytesHuman()); }
internal static OngoingCapture Capture(string eventName, string eventSubText, TimelineCategoryItem category, ITimelineMessage message) { if (string.IsNullOrEmpty(eventName)) { throw new ArgumentNullException("eventName"); } #pragma warning disable 618 var executionTimer = GlimpseConfiguration.GetConfiguredTimerStrategy()(); var messageBroker = GlimpseConfiguration.GetConfiguredMessageBroker(); #pragma warning restore 618 if (executionTimer == null || messageBroker == null) { return(OngoingCapture.Empty()); } return(new OngoingCapture(executionTimer, messageBroker, eventName, eventSubText, category, message)); }
internal static OngoingCapture Capture(string eventName, TimelineCategoryItem category, ITimelineMessage message) { return(Capture(eventName, null, category, message)); }
public OngoingCapture(IExecutionTimer executionTimer, IMessageBroker messageBroker, string eventName, string eventSubText, TimelineCategoryItem category, ITimelineMessage message) { Offset = executionTimer.Start(); ExecutionTimer = executionTimer; Message = message.AsTimelineMessage(eventName, category, eventSubText); MessageBroker = messageBroker; }
internal static void CaptureMoment(string eventName, TimelineCategoryItem category, ITimelineMessage message) { CaptureMoment(eventName, null, category, message); }
public static T AsMvcTimelineMessage <T>(this T message, TimelineCategoryItem eventCategory) where T : ITimelineMessage { message.EventCategory = eventCategory; var controllerName = string.Empty; var actionName = string.Empty; var actionMessage = message as IActionMessage; if (actionMessage != null) { controllerName = actionMessage.ControllerName; actionName = actionMessage.ActionName; } var viewRenderMessage = message as View.Render.Message; if (viewRenderMessage != null) { message.EventName = string.Format("Render: {0}.{1}", controllerName, actionName); return(message); } var activeInvokerInvokeActionResultMessage = message as IInvokeActionResultMessage; if (activeInvokerInvokeActionResultMessage != null) { message.EventName = string.Format("Action Result: {0}.{1}", controllerName, actionName); return(message); } var activeInvokerInvokeActionMethodMessage = message as ActionInvoker.InvokeActionMethod.Message; if (activeInvokerInvokeActionMethodMessage != null) { message.EventName = string.Format("Controller: {0}.{1}", controllerName, actionName); return(message); } var boundedFilterMessage = message as IBoundedFilterMessage; if (boundedFilterMessage != null) { message.EventName = string.Format("{0} {1}: {2}.{3}", boundedFilterMessage.Category.ToString(), boundedFilterMessage.Bounds.ToString(), controllerName, actionName); return(message); } var filterMessage = message as IFilterMessage; if (filterMessage != null) { message.EventName = string.Format("{0}: {1}.{2}", filterMessage.Category.ToString(), controllerName, actionName); return(message); } if (actionMessage != null) { message.EventName = string.Format("{0}.{1}", controllerName, actionName); return(message); } return(message); }
public void ShouldBeAbleToBuildWithFactory(TimerResult timerResult, string eventName, TimelineCategoryItem eventCategory, string eventSubText) { var testMessage = new TestMessage().AsTimelineMessage(eventName, eventCategory, eventSubText); Assert.Equal(eventName, testMessage.EventName); Assert.Equal(eventCategory, testMessage.EventCategory); Assert.Equal(eventSubText, testMessage.EventSubText); }
public TimerResult PublishTimedAction <TMessage>(Action action, Func <TimerResult, TMessage> messageFactory, TimelineCategoryItem category, string eventName, string eventSubText = null) where TMessage : class { var timedResult = PublishTimedAction(action, category, eventName, eventSubText); PublishMessage(messageFactory(timedResult)); return(timedResult); }
public TimedActionResult <T> PublishTimedAction <T, TMessage>(Func <T> action, Func <T, TimerResult, TMessage> messageFactory, TimelineCategoryItem category, Func <T, string> eventNameFactory, Func <T, string> eventSubTextFactory = null, Func <T, bool> publishCondition = null) where TMessage : class { var actionResult = PublishTimedAction(action, category, eventNameFactory, eventSubTextFactory); if (publishCondition == null || publishCondition(actionResult.ActionResult)) { PublishMessage(messageFactory(actionResult.ActionResult, actionResult.TimerResult)); } return(actionResult); }