<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Daniel Vasquez Lopez's Blog : Rewriter</title><link>http://blogs.msdn.com/danielvl/archive/tags/Rewriter/default.aspx</link><description>Tags: Rewriter</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>How to consume ETW events from C#</title><link>http://blogs.msdn.com/danielvl/archive/2009/02/02/how-to-consume-etw-events-from-c.aspx</link><pubDate>Tue, 03 Feb 2009 04:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9392291</guid><dc:creator>Daniel Vasquez Lopez</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/danielvl/comments/9392291.aspx</comments><wfw:commentRss>http://blogs.msdn.com/danielvl/commentrss.aspx?PostID=9392291</wfw:commentRss><description>&lt;P&gt;In my &lt;A href="http://blogs.msdn.com/danielvl/archive/2009/01/25/view-etw-rewrite-events.aspx" mce_href="http://blogs.msdn.com/danielvl/archive/2009/01/25/view-etw-rewrite-events.aspx"&gt;previous post&lt;/A&gt; I explained how to collect ETW events from URL Rewrite (or any other IIS provider) and then display those structured events in the Event Viewer. Now I want to show you how to collect ETW events using C#.&lt;/P&gt;
&lt;P&gt;The .NET Framework 3.5 provides a new namespace System.Diagnostics.Eventing.Reader where you can find useful classes for publishing ETW events, but doesn’t provide a mechanism for consuming, so I had to write a class EventTraceWatcher for simplify things.&lt;/P&gt;
&lt;P&gt;I want to use this class for tracking, in real time, all the URL Rewrite Events. &lt;/P&gt;
&lt;H2&gt;Setup Event Trace Session&lt;/H2&gt;
&lt;P&gt;The first thing to do is to setup the session, open “Reliability and Performance Monitor”, go to Event Trace Sessions and add a new Data Collector Set named “Rewrite”; my &lt;A href="http://blogs.msdn.com/danielvl/archive/2009/01/25/view-etw-rewrite-events.aspx" mce_href="http://blogs.msdn.com/danielvl/archive/2009/01/25/view-etw-rewrite-events.aspx"&gt;previous post&lt;/A&gt; has more detailed steps, once you create the collector set, go to its properties and add the provider “IIS: WWW Server” and the Keyword 0x400 (Rewrite) and set the Level to 5. Here is how it should be:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/HowtoconsumeETWeventsfromC_F36B/Trace%20Providers_2.png" mce_href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/HowtoconsumeETWeventsfromC_F36B/Trace%20Providers_2.png"&gt;&lt;IMG title="Trace Providers" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=368 alt="Trace Providers" src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/HowtoconsumeETWeventsfromC_F36B/Trace%20Providers_thumb.png" width=516 border=0 mce_src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/HowtoconsumeETWeventsfromC_F36B/Trace%20Providers_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H2&gt;Use stream mode “Real Time”&lt;/H2&gt;
&lt;P&gt;By default the Data Collector Set will write the collected events in the file system. Change it from File to “Real Time”. Your .NET Application will be listening those real time events. Open the data collector properties and in the Trace Session tab change this setting.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/HowtoconsumeETWeventsfromC_F36B/Trace%20Session_2.png" mce_href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/HowtoconsumeETWeventsfromC_F36B/Trace%20Session_2.png"&gt;&lt;IMG title="Trace Session" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=369 alt="Trace Session" src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/HowtoconsumeETWeventsfromC_F36B/Trace%20Session_thumb.png" width=516 border=0 mce_src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/HowtoconsumeETWeventsfromC_F36B/Trace%20Session_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Make sure to start the Rewrite Collector once you are finish with this settings.&lt;/P&gt;
&lt;H2&gt;EventTraceWatcher class&lt;/H2&gt;
&lt;P&gt;The EventTraceWatcher class is very trivial to use, you need to provide the name of the Data Collector Set to it’s constructor (“Rewrite” in our example), hook the event “EventArrived” in your code and then just set the property Enabled to true to start the asynchronous processing of the ETW Events.&lt;/P&gt;
&lt;DIV class=code&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;System&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Microsoft.Iis.Samples.Eventing&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;class&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Program&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;static&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Main()&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;try&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Program().Run()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;catch&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Exception&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;ex)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Console&lt;/FONT&gt;&lt;FONT color=#000000&gt;.Error.WriteLine(ex)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;private&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Run()&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;Guid&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;RewriteProviderId&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Guid(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"0469abfa-1bb2-466a-b645-e3e15a02f38b"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;using&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(EventTraceWatcher&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;watcher&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;EventTraceWatcher(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Rewrite"&lt;/FONT&gt;&lt;FONT color=#000000&gt;))&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;watcher.EventArrived&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;delegate&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;object&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;sender,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;EventArrivedEventArgs&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;e)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(e.EventException&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;!&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;null&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Handle the exception &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Console&lt;/FONT&gt;&lt;FONT color=#000000&gt;.Error.WriteLine(e.EventException)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Environment&lt;/FONT&gt;&lt;FONT color=#000000&gt;.Exit(-&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Process only URL Rewrite events &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(e.ProviderId&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;!&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;RewriteProviderId)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;return;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Dump the event name (e.g. URL_REWRITE_START, ABORT_REQUEST_ACTION, etc). &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Console&lt;/FONT&gt;&lt;FONT color=#000000&gt;.WriteLine(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Event Name: " &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;e.EventName)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Dump properties (e.g. RewriteURL, Pattern, etc). &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;foreach&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;p&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;in&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;e.Properties)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Console&lt;/FONT&gt;&lt;FONT color=#000000&gt;.WriteLine(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"\t" &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;p.Key&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt; " -- " &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;p.Value)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Console&lt;/FONT&gt;&lt;FONT color=#000000&gt;.WriteLine()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Start listening &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;watcher.Enabled&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;true;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV class=code&gt;&lt;FONT color=#006400&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Listen events until user press &amp;lt;Enter&amp;gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Console&lt;/FONT&gt;&lt;FONT color=#000000&gt;.WriteLine(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Press &amp;lt;Enter&amp;gt; to exit"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#2b91af&gt;Console&lt;/FONT&gt;&lt;FONT color=#000000&gt;.ReadLine()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt; &lt;/DIV&gt;
&lt;P&gt;With this code you can write tools to help you to filter in real time information from IIS. Download the EventTraceWatcher class from:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://code.msdn.microsoft.com/EventTraceWatcher"&gt;http://code.msdn.microsoft.com/EventTraceWatcher&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9392291" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/danielvl/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/danielvl/archive/tags/Rewrite/default.aspx">Rewrite</category><category domain="http://blogs.msdn.com/danielvl/archive/tags/ETW/default.aspx">ETW</category><category domain="http://blogs.msdn.com/danielvl/archive/tags/Rewriter/default.aspx">Rewriter</category></item><item><title>How to display URL Rewrite ETW Events in the Event Viewer</title><link>http://blogs.msdn.com/danielvl/archive/2009/01/25/view-etw-rewrite-events.aspx</link><pubDate>Mon, 26 Jan 2009 01:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9375348</guid><dc:creator>Daniel Vasquez Lopez</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/danielvl/comments/9375348.aspx</comments><wfw:commentRss>http://blogs.msdn.com/danielvl/commentrss.aspx?PostID=9375348</wfw:commentRss><description>&lt;p&gt;IIS Failed Request Tracing is a powerful way to troubleshoot Web Requests, it provides an easy way to track each execution step for one specific request. URL Rewrite Module provides several events that can be tracked using Failed Request Tracing, here is an article that explains how: &lt;a title="http://learn.iis.net/page.aspx/467/using-failed-request-tracing-to-trace-rewrite-rules/" mce_href="http://learn.iis.net/page.aspx/467/using-failed-request-tracing-to-trace-rewrite-rules/" href="http://learn.iis.net/page.aspx/467/using-failed-request-tracing-to-trace-rewrite-rules/"&gt;http://learn.iis.net/page.aspx/467/using-failed-request-tracing-to-trace-rewrite-rules/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;IIS Modules have the ability to publish ETW Events almost for free and URL Rewrite was not the exception and implemented this feature. There are many ways to listening for ETW Event, but one way that I found really easy is using the Event Viewer and the Reliability and Performance tools in Windows 2008 (and Vista).&lt;/p&gt;  &lt;p&gt;I’m running Windows 2008, so let me show you how to listen the URL Rewrite ETW events using the Server Manager tool.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Be sure IIS Failed Request Tracing is enabled by following the article above.&lt;/li&gt;    &lt;li&gt;Open Server Manager and navigate to Server Manager / Diagnostics / Reliability and Performance / Data Collector Sets / Event Trace Sessions&lt;/li&gt;    &lt;li&gt;In the Action Pane select More Actions &gt; New &gt; Data Collector Set&lt;/li&gt;    &lt;li&gt;Choose a Name and click Next&lt;/li&gt;    &lt;li&gt;In the “Which event trace providers would you like to enable?” step, click Add (wait some seconds) and choose “IIS: WWW Server”:&lt;/li&gt;    &lt;li&gt;&lt;a mce_href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%201_2.png" href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%201_2.png"&gt;&lt;img title="Step 1" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="160" alt="Step 1" mce_src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%201_thumb.png" width="244" border="0" src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%201_thumb.png"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Choose the property “Keywords(Any)” and click Edit. For URL Rewrite events, you need to choose Manual and type the value 0x400. You can optionally mix this value with any other flag available like IISSecurity or IISModule (0x200); if you select Automatic and the flag, you will see in the Manual text box the flag value. Click OK to close the Property dialog.&lt;/li&gt;    &lt;li&gt;Now choose the property “Level” and click Edit, this time select Manual and type the number 5. Click OK and the Finish.&lt;/li&gt;    &lt;li&gt;A new Event Trace Session has been created. You can click the Start button any time to start listening and recording all the URL Rewrite events. &lt;/li&gt;    &lt;li&gt;&lt;a mce_href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%202_2.png" href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%202_2.png"&gt;&lt;img title="Step 2" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="158" alt="Step 2" mce_src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%202_thumb.png" width="244" border="0" src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%202_thumb.png"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;By default, all the recorded data will be stored in the directory %LOCALAPPDATA%, to change this, select the session “URL Rewrite” and choose Properties from the contextual menu. There is a Directory and File tabs change your settings.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Let’s do a break. At this point you had configured Windows to start listening URL Rewrite events; those events will be recorded in a ETL file that can be processed by many tools like Log Parser and TraceRpt.exe. To display those event in the Event Viewer you need:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In the Server Manager tool, navigate to Server Manager / Diagnostics / Event Viewer / Application And Services Logs&lt;/li&gt;    &lt;li&gt;Click the action Open Saved Log and choose the ETL file, if you didn't’ change the default settings, it should be at “%LOCALAPPDATA%\URL Rewrite.etl”. Click OK to close the “Open Saved Log” dialog.&lt;/li&gt;    &lt;li&gt;Select the URL Rewrite log from the Saved Logs folder:&lt;/li&gt;    &lt;li&gt;&lt;a mce_href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%203_2.png" href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%203_2.png"&gt;&lt;img title="Step 3" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="125" alt="Step 3" mce_src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%203_thumb.png" width="244" border="0" src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%203_thumb.png"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Now you will realized that the Event Viewer only has one part of the information available, the ETL file, it still needs to match that data to some other metadata stored in the WMI repository store in order to show you the formatted data. &lt;/li&gt;    &lt;li&gt;Select the “URL Rewrite” log and click the action “Save Events As” and safe the log as “URL Rewrite Events.evtx” (note the new extension).&lt;/li&gt;    &lt;li&gt;Once saved, open the new file using, again, the action “Open Saved Log”&lt;/li&gt;    &lt;li&gt;Now you click any Event in the list. The General tab won’t show anything relevant, but the Details will:&lt;/li&gt;    &lt;li&gt;&lt;a mce_href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%204_2.png" href="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%204_2.png"&gt;&lt;img title="Step 4" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="163" alt="Step 4" mce_src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%204_thumb.png" width="244" border="0" src="http://blogs.msdn.com/blogfiles/danielvl/WindowsLiveWriter/ViewETWRewriteEvents_CB99/Step%204_thumb.png"&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I will have some conclusions later, I have to leave now. Hope you find it somehow useful.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9375348" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/danielvl/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/danielvl/archive/tags/Rewrite/default.aspx">Rewrite</category><category domain="http://blogs.msdn.com/danielvl/archive/tags/ETW/default.aspx">ETW</category><category domain="http://blogs.msdn.com/danielvl/archive/tags/Rewriter/default.aspx">Rewriter</category></item></channel></rss>