public override void WriteLine(string message) { ProbeHistory probeHistory; if (!_probeStates.TryGetValue("(Console)", out probeHistory)) { ProbeInfo probeInfo = new ProbeInfo(); probeInfo.Name = "(Console)"; if (_probes.Probes == null) { _probes.Probes = new List <ProbeInfo>(); } _probes.Probes.Add(probeInfo); probeHistory = new ProbeHistory(); probeHistory.Name = "(Console)"; probeHistory.History = new List <ProbeState>(); _probeStates.Add(probeHistory.Name, probeHistory); } ProbeState probeState = new ProbeState(); probeState.Timestamp = DateTime.Now.ToString("yyyy'-'MM'-'dd' 'HH':'mm':'ss"); probeState.Message = message; AddProbeState(probeState, ref probeHistory); }
void AddProbeState(ProbeState probeState, ref ProbeHistory probeHistory) { probeHistory.History.Insert(0, probeState); probeHistory.History.RemoveAll(delegate(ProbeState state) { return(DateTime.Now.Subtract(DateTime.Parse(state.Timestamp)) > TimeSpan.FromDays(1)); }); string name = probeHistory.Name; ProbeInfo probeInfo = _probes.Probes.Find(delegate(ProbeInfo probe) { return(probe.Name == name); }); if (probeInfo != null) { probeInfo.UpdateState(probeState); } }
public void RegisterProbe(TraceSource probe) { probe.Listeners.Add(this); ProbeInfo probeInfo = new ProbeInfo(); probeInfo.Name = probe.Name; if (_probes.Probes == null) { _probes.Probes = new List <ProbeInfo>(); } _probes.Probes.Add(probeInfo); ProbeHistory probeHistory = new ProbeHistory(); probeHistory.Name = probe.Name; probeHistory.History = new List <ProbeState>(); _probeStates.Add(probe.Name, probeHistory); }
public Stream CurrentStatus() { // Open "Status.html" and let javascript query for nodes and history (GWT ?) // Implement Search and Replace framework for filling into html-template MemoryStream stream = new MemoryStream(); XmlWriter xmlWriter = XmlWriter.Create(stream); xmlWriter.WriteStartDocument(); xmlWriter.WriteRaw(@"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"">"); { xmlWriter.WriteStartElement("html", "http://www.w3.org/1999/xhtml"); { xmlWriter.WriteStartElement("head"); xmlWriter.WriteElementString("title", "SnakeEyes Status"); xmlWriter.WriteStartElement("link"); xmlWriter.WriteAttributeString("rel", "stylesheet"); xmlWriter.WriteAttributeString("href", "../files/status.css"); xmlWriter.WriteAttributeString("type", "text/css"); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); } { xmlWriter.WriteStartElement("body"); foreach (ProbeInfo probe in _probes.Probes) { xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeInfo"); xmlWriter.WriteAttributeString("id", probe.Name); { xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeName"); xmlWriter.WriteValue(probe.Name); xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeLastStatus"); if (probe.Status != null) { xmlWriter.WriteValue(probe.Status); } xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeLastEventId"); xmlWriter.WriteValue(probe.EventId); xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeLastMessage"); if (probe.Message != null) { xmlWriter.WriteValue(probe.Message); } xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeLastUpdate"); if (probe.Timestamp != null) { xmlWriter.WriteValue(probe.Timestamp); } xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeLastValue"); if (probe.Value != null) { xmlWriter.WriteValue(probe.Value); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeHistory"); xmlWriter.WriteAttributeString("id", probe.Name); { ProbeHistory probeHistory = GetProbeHistory(probe.Name); if (probeHistory != null) { foreach (ProbeState probeEvent in probeHistory.History) { xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeState"); xmlWriter.WriteAttributeString("id", probe.Timestamp); { xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeStatus"); if (probeEvent.Status != null) { xmlWriter.WriteValue(probeEvent.Status); } xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeEventId"); xmlWriter.WriteValue(probeEvent.EventId); xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeMessage"); if (probeEvent.Message != null) { xmlWriter.WriteValue(probeEvent.Message); } xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeTimestamp"); if (probeEvent.Timestamp != null) { xmlWriter.WriteValue(probeEvent.Timestamp); } xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("class", "probeValue"); if (probeEvent.Value != null) { xmlWriter.WriteValue(probeEvent.Value); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndDocument(); xmlWriter.Flush(); stream.Position = 0; if (WebOperationContext.Current != null) { WebOperationContext.Current.OutgoingResponse.ContentType = "text/html"; } return(stream); }