public static string Render() { var storage = new Storage(StorageHelper.GetSessionStorageKey()); var list = storage.GetStorage(); var errorStateCss = list.Any(x => x.IsErrorState) ? " bocce-error" : ""; var builder = new StringBuilder(); builder.AppendLine(CssClasses); builder.Append("<div class='bocce-results").Append(errorStateCss).Append("'>") .AppendLine("<div class='bocce-results-label'>Bocce Log</div>") .AppendLine("<div class='bocce-results-list'>"); list.ForEach(x => builder.AppendLine(RenderItem(x))); builder.AppendLine("</div></div>"); builder.AppendLine("<script type='text/javascript'>$(function() { $('.bocce-results .bocce-results-label').click(function() { $('.bocce-results .bocce-results-list').toggle(); }); });</script>"); storage.Clear(); return builder.ToString(); }
public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data) { var localData = data.ToString(); // Try and match data to a TraceRecord and so we an write better output. ToString() on data is putting the running app info on. // possible future enhancement of breaking it back to trace record and writing more discrete fields try { var navigator = data as XPathNavigator; if (navigator != null) { var xElement = navigator.UnderlyingObject as XElement; if (xElement != null) { var singleOrDefault = xElement.Elements().SingleOrDefault(a => a.Name.LocalName == "Description"); if (singleOrDefault != null) { localData = singleOrDefault.Value; } } } } catch (Exception) { //reset localData = data.ToString(); } var storage = new Storage(StorageHelper.GetSessionStorageKey()); // Store the info in http runtime cache storage.Write(new LocalizationMessage { Name = source, EventType = eventType.ToString(), Id = id, Data = localData }); }