protected IEnumerable <TraceEvent> LoadSampleTrace() { var traceSource = LoadEventSource(); var parser = new IISLogTraceEventParser(traceSource); List <TraceEvent> events = new List <TraceEvent>(); parser.All += e => { events.Add(e.Clone()); }; traceSource.Process(); return(events); }
static void Main(string[] args) { // create a new real-time ETW trace session using (var session = new TraceEventSession(SessionName)) { // enable IIS ETW provider and set up a new trace source on it session.EnableProvider(IISLogTraceEventParser.ProviderName, TraceEventLevel.Verbose); using (var traceSource = new ETWTraceEventSource(SessionName, TraceEventSourceType.Session)) { Console.WriteLine("Session started, listening for events..."); var parser = new IISLogTraceEventParser(traceSource); parser.IISLog += OnIISRequest; traceSource.Process(); Console.ReadLine(); traceSource.StopProcessing(); } } }
public void ObservesAllEvents() { var source = LoadEventSource(); var parser = new IISLogTraceEventParser(source); var observable = parser.Observe(IISLogTraceEventParser.ProviderName, null); var counter = new CountingProcessor(); var sourceProc = new TraceSourceProcessor(counter); sourceProc.Start(observable); source.Process(); source.StopProcessing(); sourceProc.Stop().Wait(); Assert.AreEqual(9, counter.GetCount()); Assert.IsTrue(counter.FlushCalled); Assert.IsTrue(counter.DisposeCalled); }