public void EventWithPayloadAndEnumsInXml() { string fileName = "LogUsingPayloadWithEnumsInProc"; File.Delete(fileName); var formatter = new XmlEventTextFormatter(EventTextFormatting.Indented, "d"); var logger = MockEventSourceInProcEnum.Logger; using (var listener = new ObservableEventListener()) { listener.EnableEvents(logger, EventLevel.LogAlways, Keywords.All); listener.LogToFlatFile(fileName, formatter); try { logger.SendEnumsEvent16(MockEventSourceInProcEnum.MyColor.Green, MockEventSourceInProcEnum.MyFlags.Flag1); } finally { listener.DisableEvents(logger); } } var rawOutput = FlatFileHelper.GetAllText(fileName); var entries = XDocument.Parse("<Events>" + rawOutput + "</Events>").Root.Elements(); Assert.AreEqual(1, entries.Count()); XmlFormattedEntry.Fill(entries.First()); Assert.AreEqual("a", XmlFormattedEntry.Payload.Elements().First().Attribute("Name").Value); Assert.AreEqual("2", XmlFormattedEntry.Payload.Elements().First().Value); Assert.AreEqual("b", XmlFormattedEntry.Payload.Elements().Last().Attribute("Name").Value); Assert.AreEqual("1", XmlFormattedEntry.Payload.Elements().Last().Value); }
public void TwoEventsWithPayloadsAndMessageInXml() { var formatter = new XmlEventTextFormatter(); var logger = MockEventSrcForXml.Logger; string rawOutput = string.Empty; using (var listener = new InMemoryEventListener(formatter)) { listener.EnableEvents(logger, EventLevel.LogAlways, MockEventSrcForXml.Keywords.Errors); try { logger.LogUsingMessage(MockEventSrcForXml.LogMessage); logger.LogUsingMessage(MockEventSrcForXml.LogMessage + "2"); rawOutput = Encoding.Default.GetString(listener.Stream.ToArray()); } finally { listener.DisableEvents(logger); } } var entries = XDocument.Parse("<Events>" + rawOutput + "</Events>").Root.Elements(); Assert.AreEqual(2, entries.Count()); XmlFormattedEntry.Fill(entries.First()); Assert.AreEqual("message", XmlFormattedEntry.Payload.Elements().First().Attribute("Name").Value); Assert.AreEqual(MockEventSrcForXml.LogMessage, XmlFormattedEntry.Payload.Elements().First().Value); XmlFormattedEntry.Fill(entries.Last()); Assert.AreEqual("message", XmlFormattedEntry.Payload.Elements().Last().Attribute("Name").Value); Assert.AreEqual(MockEventSrcForXml.LogMessage + "2", XmlFormattedEntry.Payload.Elements().First().Value); Assert.AreEqual(MockEventSrcForXml.LogMessage, XmlFormattedEntry.Message.Elements().First().Value); }
public void WhenEventWithGuidPramLoggedInXml() { string fileName = "FlatFileXmlFormatterAndGuids.log"; File.Delete(fileName); var logger = MockEventSourceOutProcEnum.Logger; var testGuid = Guid.NewGuid(); IEnumerable <XElement> entries; using (var svcConfiguration = TraceEventServiceConfiguration.Load("Configurations\\WithFormatter\\FlatFileXmlFormatterAndGuids.xml")) using (var evtService = new TraceEventService(svcConfiguration)) { evtService.Start(); try { logger.SaveExpenseStarted(testGuid); entries = FlatFileHelper.PollUntilXmlEventsAreWritten(fileName, 1); } finally { evtService.Stop(); } } Assert.AreEqual(1, entries.Count()); XmlFormattedEntry.Fill(entries.Single()); Assert.AreEqual <Guid>(MockEventSourceOutProcEnum.Logger.Guid, Guid.Parse(XmlFormattedEntry.Provider.Attribute("Guid").Value)); Assert.AreEqual <int>(4, Convert.ToInt32(XmlFormattedEntry.EventId.Value)); StringAssert.Contains(XmlFormattedEntry.Payload.ToString(), testGuid.ToString()); }
public void EventWithActivityIdInXml() { var formatter = new XmlEventTextFormatter(); var logger = MockEventSrcForXml.Logger; var activityId = Guid.NewGuid(); var previousActivityId = Guid.Empty; string rawOutput = string.Empty; using (var listener = new InMemoryEventListener(formatter)) { listener.EnableEvents(logger, EventLevel.LogAlways, MockEventSrcForXml.Keywords.Errors); try { EventSource.SetCurrentThreadActivityId(activityId, out previousActivityId); logger.LogUsingMessage(MockEventSrcForXml.LogMessage); rawOutput = Encoding.Default.GetString(listener.Stream.ToArray()); } finally { listener.DisableEvents(logger); EventSource.SetCurrentThreadActivityId(previousActivityId); } } var entries = XDocument.Parse("<Events>" + rawOutput + "</Events>").Root.Elements(); XmlFormattedEntry.Fill(entries.First()); Assert.AreEqual <Guid>(EventSource.GetGuid(typeof(MockEventSrcForXml)), Guid.Parse(XmlFormattedEntry.Provider.Attribute("Guid").Value)); Assert.AreEqual(1, XmlFormattedEntry.Payload.Elements().Count()); Assert.AreEqual("message", XmlFormattedEntry.Payload.Elements().First().Attribute("Name").Value); Assert.AreEqual(MockEventSrcForXml.LogMessage, XmlFormattedEntry.Payload.Elements().First().Value); Assert.AreEqual <Guid>(activityId, Guid.Parse(XmlFormattedEntry.Correlation.Attribute("ActivityID").Value)); Assert.IsNull(XmlFormattedEntry.Correlation.Attribute("RelatedActivityID")); }
public void WhenCustomDateTimeFormatInXml() { string fileName = "FlatFileXmlFormatterDateTimeFormat.log"; File.Delete(fileName); var logger = MockEventSourceOutProc.Logger; IEnumerable <XElement> entries; using (var svcConfiguration = TraceEventServiceConfiguration.Load("Configurations\\WithFormatter\\FlatFileXmlFormatterDateTimeFormat.xml")) using (var evtService = new TraceEventService(svcConfiguration)) { evtService.Start(); try { logger.LogSomeMessage("logging using xml Formatter not indented"); entries = FlatFileHelper.PollUntilXmlEventsAreWritten(fileName, 1); } finally { evtService.Stop(); } } Assert.AreEqual(1, entries.Count()); XmlFormattedEntry.Fill(entries.Single()); var dt = DateTime.UtcNow; string expectedTimestamp = dt.Day.ToString() + dt.Month.ToString() + dt.Year.ToString(); StringAssert.Contains(XmlFormattedEntry.TimeCreated.ToString(), @"SystemTime=""" + expectedTimestamp + @""""); }
public void WhenEnumsInPayloadInXml() { string fileName = "FlatFileXmlFormatterAndEnums.log"; File.Delete(fileName); var logger = MockEventSourceOutProcEnum.Logger; IEnumerable <XElement> entries = null; var svcConfiguration = TraceEventServiceConfiguration.Load("Configurations\\WithFormatter\\FlatFileXmlFormatterAndEnums.xml"); TestScenario.WithConfiguration( svcConfiguration, () => { logger.SendEnumsEvent16(MockEventSourceOutProcEnum.MyColor.Red, MockEventSourceOutProcEnum.MyFlags.Flag3); entries = FlatFileHelper.PollUntilXmlEventsAreWritten(fileName, 1); }); Assert.AreEqual(1, entries.Count()); XmlFormattedEntry.Fill(entries.Single()); Assert.AreEqual <Guid>(MockEventSourceOutProcEnum.Logger.Guid, Guid.Parse(XmlFormattedEntry.Provider.Attribute("Guid").Value)); Assert.AreEqual <int>(3, Convert.ToInt32(XmlFormattedEntry.EventId.Value)); Assert.AreEqual <byte>(0, Convert.ToByte(XmlFormattedEntry.Version.Value)); Assert.AreEqual <int>((int)EventLevel.Informational, Int32.Parse(XmlFormattedEntry.Level.Value)); Assert.AreEqual <int>((int)MockEventSourceOutProcEnum.Tasks.Opcode, Int32.Parse(XmlFormattedEntry.Task.Value)); Assert.AreEqual <long>(0, Int64.Parse(XmlFormattedEntry.Keywords.Value.Replace("0x", string.Empty))); Assert.AreEqual <int>((int)EventOpcode.Resume, Int32.Parse(XmlFormattedEntry.Opcode.Value)); Assert.AreEqual <int>(System.Diagnostics.Process.GetCurrentProcess().Id, Int32.Parse(XmlFormattedEntry.ProcessId.Value)); Assert.AreEqual <int>(ThreadHelper.GetCurrentUnManagedThreadId(), Int32.Parse(XmlFormattedEntry.ThreadId.Value)); Assert.AreEqual(2, XmlFormattedEntry.Payload.Elements().Count()); StringAssert.Contains(XmlFormattedEntry.Payload.ToString(), @"<Data Name=""a"">" + ((int)MockEventSourceOutProcEnum.MyColor.Red).ToString() + "</Data>"); StringAssert.Contains(XmlFormattedEntry.Payload.ToString(), @"<Data Name=""b"">" + ((int)MockEventSourceOutProcEnum.MyFlags.Flag3).ToString() + "</Data>"); }
public void WhenUsingXmlFormatterInIndented() { string fileName = "FlatFileXmlFormatterIndentedOutProc.log"; File.Delete(fileName); var logger = MockEventSourceOutProc.Logger; IEnumerable <XElement> entries = null; var svcConfiguration = TraceEventServiceConfiguration.Load("Configurations\\WithFormatter\\FlatFileXmlFormatterIndentedOutProc.xml"); TestScenario.WithConfiguration( svcConfiguration, () => { logger.LogSomeMessage("logging using xml Formatter indented"); entries = FlatFileHelper.PollUntilXmlEventsAreWritten(fileName, 1); }); XmlFormattedEntry.Fill(entries.Single()); Assert.AreEqual <Guid>(MockEventSourceOutProc.Logger.Guid, Guid.Parse(XmlFormattedEntry.Provider.Attribute("Guid").Value)); Assert.AreEqual <int>(8, Convert.ToInt32(XmlFormattedEntry.EventId.Value)); Assert.AreEqual <byte>(0, Convert.ToByte(XmlFormattedEntry.Version.Value)); Assert.AreEqual <int>((int)EventLevel.Informational, Int32.Parse(XmlFormattedEntry.Level.Value)); Assert.AreEqual <int>(65526, Int32.Parse(XmlFormattedEntry.Task.Value)); Assert.AreEqual <long>(0, Int64.Parse(XmlFormattedEntry.Keywords.Value.Replace("0x", string.Empty))); Assert.AreEqual <int>(0, Int32.Parse(XmlFormattedEntry.Opcode.Value)); Assert.AreEqual <int>(System.Diagnostics.Process.GetCurrentProcess().Id, Int32.Parse(XmlFormattedEntry.ProcessId.Value)); Assert.AreEqual <int>(ThreadHelper.GetCurrentUnManagedThreadId(), Int32.Parse(XmlFormattedEntry.ThreadId.Value)); Assert.AreEqual(1, XmlFormattedEntry.Payload.Elements().Count()); Assert.AreEqual("message", XmlFormattedEntry.Payload.Elements().First().Attribute("Name").Value); Assert.AreEqual("logging using xml Formatter indented", XmlFormattedEntry.Payload.Elements().First().Value); }
public void EventWithPayloadAndMessageWithDateTimeFormatInXml() { var formatter = new XmlEventTextFormatter(); formatter.DateTimeFormat = "dd/MM/yyyy"; var logger = MockEventSrcForXml.Logger; string rawOutput = string.Empty; using (var listener = new InMemoryEventListener(formatter)) { listener.EnableEvents(logger, EventLevel.LogAlways, MockEventSrcForXml.Keywords.Errors); try { logger.LogUsingMessage(MockEventSrcForXml.LogMessage); rawOutput = Encoding.Default.GetString(listener.Stream.ToArray()); } finally { listener.DisableEvents(logger); } } var entries = XDocument.Parse("<Events>" + rawOutput + "</Events>").Root.Elements(); XmlFormattedEntry.Fill(entries.First()); Assert.IsFalse(rawOutput.StartsWith("{\r\n")); // No Formatting (Default) string today = System.DateTime.Today.ToString(formatter.DateTimeFormat); string tomorrow = System.DateTime.Today.AddDays(1).ToString("dd/MM/yyyy"); Assert.IsTrue(rawOutput.Contains(today) || rawOutput.Contains(tomorrow)); Assert.AreEqual <Guid>(EventSource.GetGuid(typeof(MockEventSrcForXml)), Guid.Parse(XmlFormattedEntry.Provider.Attribute("Guid").Value)); Assert.AreEqual <int>(MockEventSrcForXml.LogUsingMessageEventID, Convert.ToInt32(XmlFormattedEntry.EventId.Value)); Assert.AreEqual <byte>(0, Convert.ToByte(XmlFormattedEntry.Version.Value)); Assert.AreEqual <int>((int)EventLevel.Informational, Int32.Parse(XmlFormattedEntry.Level.Value)); Assert.AreEqual <int>((int)MockEventSrcForXml.Tasks.Page, Int32.Parse(XmlFormattedEntry.Task.Value)); Assert.AreEqual <long>((long)EventKeywords.None, Int64.Parse(XmlFormattedEntry.Keywords.Value.Replace("0x", string.Empty))); Assert.AreEqual <int>((int)EventOpcode.Start, Int32.Parse(XmlFormattedEntry.Opcode.Value)); Assert.AreEqual <byte>(0, Convert.ToByte(XmlFormattedEntry.Version.Value)); Assert.AreEqual <int>(System.Diagnostics.Process.GetCurrentProcess().Id, Int32.Parse(XmlFormattedEntry.ProcessId.Value)); Assert.AreEqual <int>(ThreadHelper.GetCurrentUnManagedThreadId(), Int32.Parse(XmlFormattedEntry.ThreadId.Value)); DateTime dt; Assert.IsTrue(DateTime.TryParseExact(XmlFormattedEntry.TimeCreated.Attribute("SystemTime").Value, formatter.DateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)); Assert.AreEqual(1, XmlFormattedEntry.Payload.Elements().Count()); Assert.AreEqual("message", XmlFormattedEntry.Payload.Elements().First().Attribute("Name").Value); Assert.AreEqual(MockEventSrcForXml.LogMessage, XmlFormattedEntry.Payload.Elements().First().Value); Assert.AreEqual(MockEventSrcForXml.LogMessage, XmlFormattedEntry.Message.Elements().First().Value); }
public void EventWithPayloadKeywrdsNoMsgInXml() { var logger = MockEventSrcForXml.Logger; var formatter = new XmlEventTextFormatter(); string rawOutput = string.Empty; using (var listener = new InMemoryEventListener(formatter)) { listener.EnableEvents(logger, EventLevel.LogAlways, MockEventSrcForXml.Keywords.Errors); try { logger.UsingKeywords(MockEventSrcForXml.LogMessage, long.MaxValue); rawOutput = listener.ToString(); } finally { listener.DisableEvents(logger); } } Assert.AreEqual(-1, rawOutput.IndexOf("\r\n")); var entries = XDocument.Parse("<Events>" + rawOutput + "</Events>").Root.Elements(); XmlFormattedEntry.Fill(entries.Single()); Assert.AreEqual <Guid>(EventSource.GetGuid(typeof(MockEventSrcForXml)), Guid.Parse(XmlFormattedEntry.Provider.Attribute("Guid").Value)); Assert.AreEqual <int>(MockEventSrcForXml.UsingKeywordsEventID, Convert.ToInt32(XmlFormattedEntry.EventId.Value)); Assert.AreEqual <byte>(0, Convert.ToByte(XmlFormattedEntry.Version.Value)); Assert.AreEqual <int>((int)EventLevel.Informational, Int32.Parse(XmlFormattedEntry.Level.Value)); Assert.AreEqual <int>((int)MockEventSrcForXml.Tasks.DBQuery, Int32.Parse(XmlFormattedEntry.Task.Value)); Assert.AreEqual <long>((long)MockEventSrcForXml.Keywords.Errors, Int64.Parse(XmlFormattedEntry.Keywords.Value.Replace("0x", string.Empty))); Assert.AreEqual <int>((int)EventOpcode.Start, Int32.Parse(XmlFormattedEntry.Opcode.Value)); Assert.AreEqual <int>(System.Diagnostics.Process.GetCurrentProcess().Id, Int32.Parse(XmlFormattedEntry.ProcessId.Value)); Assert.AreEqual <int>(ThreadHelper.GetCurrentUnManagedThreadId(), Int32.Parse(XmlFormattedEntry.ThreadId.Value)); DateTime dt; Assert.IsTrue(DateTime.TryParseExact(XmlFormattedEntry.TimeCreated.Attribute("SystemTime").Value, EventEntry.DefaultDateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)); Assert.AreEqual(2, XmlFormattedEntry.Payload.Elements().Count()); Assert.AreEqual("message", XmlFormattedEntry.Payload.Elements().First().Attribute("Name").Value); Assert.AreEqual(MockEventSrcForXml.LogMessage, XmlFormattedEntry.Payload.Elements().First().Value); Assert.AreEqual("longArg", XmlFormattedEntry.Payload.Elements().Last().Attribute("Name").Value); Assert.AreEqual(long.MaxValue.ToString(), XmlFormattedEntry.Payload.Elements().Last().Value); }
public void EventWithPayloadAloneInXml() { var formatter = new XmlEventTextFormatter(); string payloadMsg = ("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<test/>"); var logger = MockEventSrcForXml.Logger; string rawOutput = string.Empty; using (var listener = new InMemoryEventListener(formatter)) { listener.EnableEvents(logger, EventLevel.LogAlways, MockEventSrcForXml.Keywords.Errors); try { logger.LogUsingMessage(payloadMsg); rawOutput = Encoding.Default.GetString(listener.Stream.ToArray()); } finally { listener.DisableEvents(logger); } } var entries = XDocument.Parse("<Events>" + rawOutput + "</Events>").Root.Elements(); XmlFormattedEntry.Fill(entries.First()); Assert.IsFalse(rawOutput.StartsWith("{\r\n")); // No Formatting (Default) Assert.AreEqual <Guid>(EventSource.GetGuid(typeof(MockEventSrcForXml)), Guid.Parse(XmlFormattedEntry.Provider.Attribute("Guid").Value)); Assert.AreEqual <int>(MockEventSrcForXml.LogUsingMessageEventID, Convert.ToInt32(XmlFormattedEntry.EventId.Value)); Assert.AreEqual <byte>(0, Convert.ToByte(XmlFormattedEntry.Version.Value)); Assert.AreEqual <int>((int)EventLevel.Informational, Int32.Parse(XmlFormattedEntry.Level.Value)); Assert.AreEqual <int>((int)EventTask.None, Int32.Parse(XmlFormattedEntry.Task.Value)); Assert.AreEqual <long>((long)EventKeywords.None, Int64.Parse(XmlFormattedEntry.Keywords.Value.Replace("0x", string.Empty))); Assert.AreEqual <int>((int)EventOpcode.Start, Int32.Parse(XmlFormattedEntry.Opcode.Value)); Assert.AreEqual <byte>(0, Convert.ToByte(XmlFormattedEntry.Version.Value)); DateTime dt; Assert.IsTrue(DateTime.TryParseExact(XmlFormattedEntry.TimeCreated.Attribute("SystemTime").Value, EventEntry.DefaultDateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)); Assert.AreEqual(1, XmlFormattedEntry.Payload.Elements().Count()); Assert.AreEqual("message", XmlFormattedEntry.Payload.Elements().First().Attribute("Name").Value); Assert.AreEqual(payloadMsg, XmlFormattedEntry.Payload.Elements().First().Value); }
public void WhenEnumsInPayloadInXml() { string fileName = "FlatFileXmlFormatterAndEnums.log"; File.Delete(fileName); var logger = MockEventSourceOutProcEnum.Logger; IEnumerable <XElement> entries; using (var svcConfiguration = TraceEventServiceConfiguration.Load("Configurations\\WithFormatter\\FlatFileXmlFormatterAndEnums.xml")) using (var evtService = new TraceEventService(svcConfiguration)) { evtService.Start(); try { logger.SendEnumsEvent16(MockEventSourceOutProcEnum.MyColor.Red, MockEventSourceOutProcEnum.MyFlags.Flag3); entries = FlatFileHelper.PollUntilXmlEventsAreWritten(fileName, 1); } finally { evtService.Stop(); } } Assert.AreEqual(1, entries.Count()); XmlFormattedEntry.Fill(entries.Single()); Assert.AreEqual <Guid>(MockEventSourceOutProcEnum.Logger.Guid, Guid.Parse(XmlFormattedEntry.Provider.Attribute("Guid").Value)); Assert.AreEqual <int>(3, Convert.ToInt32(XmlFormattedEntry.EventId.Value)); Assert.AreEqual <byte>(0, Convert.ToByte(XmlFormattedEntry.Version.Value)); Assert.AreEqual <int>((int)EventLevel.Informational, Int32.Parse(XmlFormattedEntry.Level.Value)); Assert.AreEqual <int>((int)EventTask.None, Int32.Parse(XmlFormattedEntry.Task.Value)); Assert.AreEqual <long>(0, Int64.Parse(XmlFormattedEntry.Keywords.Value.Replace("0x", string.Empty))); Assert.AreEqual <int>((int)EventOpcode.Resume, Int32.Parse(XmlFormattedEntry.Opcode.Value)); Assert.AreEqual(2, XmlFormattedEntry.Payload.Elements().Count()); StringAssert.Contains(XmlFormattedEntry.Payload.ToString(), @"<Data Name=""a"">" + ((int)MockEventSourceOutProcEnum.MyColor.Red).ToString() + "</Data>"); StringAssert.Contains(XmlFormattedEntry.Payload.ToString(), @"<Data Name=""b"">" + ((int)MockEventSourceOutProcEnum.MyFlags.Flag3).ToString() + "</Data>"); }
public void WhenNotIntendedInXml() { string fileName = "FlatFileXmlFormatterOutProc.log"; File.Delete(fileName); var logger = MockEventSourceOutProc.Logger; IEnumerable <XElement> entries; using (var svcConfiguration = TraceEventServiceConfiguration.Load("Configurations\\WithFormatter\\FlatFileXmlFormatterOutProc.xml")) using (var evtService = new TraceEventService(svcConfiguration)) { evtService.Start(); try { logger.LogSomeMessage("logging using xml Formatter not indented"); entries = FlatFileHelper.PollUntilXmlEventsAreWritten(fileName, 1); } finally { evtService.Stop(); } } Assert.AreEqual(1, entries.Count()); XmlFormattedEntry.Fill(entries.Single()); Assert.AreEqual <Guid>(MockEventSourceOutProc.Logger.Guid, Guid.Parse(XmlFormattedEntry.Provider.Attribute("Guid").Value)); Assert.AreEqual <int>(8, Convert.ToInt32(XmlFormattedEntry.EventId.Value)); Assert.AreEqual <byte>(0, Convert.ToByte(XmlFormattedEntry.Version.Value)); Assert.AreEqual <int>((int)EventLevel.Informational, Int32.Parse(XmlFormattedEntry.Level.Value)); Assert.AreEqual <int>(65526, Int32.Parse(XmlFormattedEntry.Task.Value)); Assert.AreEqual <long>(0, Int64.Parse(XmlFormattedEntry.Keywords.Value.Replace("0x", string.Empty))); Assert.AreEqual <int>(0, Int32.Parse(XmlFormattedEntry.Opcode.Value)); Assert.AreEqual(1, XmlFormattedEntry.Payload.Elements().Count()); Assert.AreEqual("message", XmlFormattedEntry.Payload.Elements().First().Attribute("Name").Value); Assert.AreEqual("logging using xml Formatter not indented", XmlFormattedEntry.Payload.Elements().First().Value); }