public void Writing_Message_To_Etw() { var resetEvent = new ManualResetEvent(false); var fpath = Path.Combine(Path.GetTempPath(), "_etwnlogtest.etl"); using (var session = new TraceEventSession("SimpleMonitorSession", fpath)) { session.EnableProvider(providerId); // send events to session var logger = LogManager.GetLogger("A"); logger.Debug("test-debug"); logger.Info("test-info"); logger.Warn("test-warn"); logger.Error("test-error"); logger.Fatal("test-fatal"); } var collectedEvents = new List <SimpleEtwEvent>(5); using (var source = new ETWTraceEventSource(fpath)) { source.UnhandledEvents += delegate(TraceEvent data) { collectedEvents.Add(new SimpleEtwEvent { Level = data.Level, Message = data.FormattedMessage }); if (collectedEvents.Count == 5) { resetEvent.Set(); } }; source.Process(); } File.Delete(fpath); // assert collected events var expectedEvents = new SimpleEtwEvent[] { new SimpleEtwEvent { Level = TraceEventLevel.Verbose, Message = "DEBUG|A|test-debug" }, new SimpleEtwEvent { Level = TraceEventLevel.Informational, Message = "INFO|A|test-info" }, new SimpleEtwEvent { Level = TraceEventLevel.Warning, Message = "WARN|A|test-warn" }, new SimpleEtwEvent { Level = TraceEventLevel.Error, Message = "ERROR|A|test-error" }, new SimpleEtwEvent { Level = TraceEventLevel.Critical, Message = "FATAL|A|test-fatal" } }; resetEvent.WaitOne(20000); Assert.Equal(expectedEvents.Length, collectedEvents.Count); Assert.Equal(expectedEvents, collectedEvents); }
public void Writing_Message_To_Etw() { var resetEvent = new ManualResetEvent(false); var fpath = Path.Combine(Path.GetTempPath(), "_etwnlogtest.etl"); using (var session = new TraceEventSession("SimpleMonitorSession", fpath)) { session.EnableProvider(providerId); // send events to session var logger = LogManager.GetLogger("A"); logger.Debug("test-debug"); logger.Info("test-info"); logger.Warn("test-warn"); logger.Error("test-error"); logger.Fatal("test-fatal"); } var collectedEvents = new List<SimpleEtwEvent>(5); using (var source = new ETWTraceEventSource(fpath)) { source.UnhandledEvents += delegate(TraceEvent data) { collectedEvents.Add(new SimpleEtwEvent { Level = data.Level, Message = data.FormattedMessage }); if (collectedEvents.Count == 5) { resetEvent.Set(); } }; source.Process(); } File.Delete(fpath); // assert collected events var expectedEvents = new SimpleEtwEvent[] { new SimpleEtwEvent { Level = TraceEventLevel.Verbose, Message = "DEBUG|A|test-debug" }, new SimpleEtwEvent { Level = TraceEventLevel.Informational, Message = "INFO|A|test-info" }, new SimpleEtwEvent { Level = TraceEventLevel.Warning, Message = "WARN|A|test-warn" }, new SimpleEtwEvent { Level = TraceEventLevel.Error, Message = "ERROR|A|test-error" }, new SimpleEtwEvent { Level = TraceEventLevel.Critical, Message = "FATAL|A|test-fatal" } }; resetEvent.WaitOne(20000); Assert.Equal(expectedEvents.Length, collectedEvents.Count); Assert.Equal(expectedEvents, collectedEvents); }