<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>IIS - Log Parser</title>
        <link>http://blog.crowe.co.nz/blog/category/31.aspx</link>
        <description>IIS - Log Parser</description>
        <language>en-NZ</language>
        <copyright>Chris Crowe</copyright>
        <managingEditor>blog@crowe.co.nz</managingEditor>
        <generator>Subtext Version 1.9.4.0</generator>
        <item>
            <title>Microsoft releases a new download center for IIS (everything in one place)</title>
            <link>http://blog.crowe.co.nz/blog/archive/2007/02/01/680.aspx</link>
            <description>&lt;IMG src="/images/IISDownloadCenter.gif" align=right&gt;
&lt;P&gt;&lt;SPAN lang=EN-US&gt;&lt;A href="http://www.iis.net/downloads/default.aspx?tabid=3" target=_blank&gt;DownloadCENTER&lt;/A&gt; for IIS.net has been released!&amp;nbsp;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN lang=EN-US&gt;The &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=3"&gt;DownloadCENTER at IIS.net&lt;/A&gt;, is a community hotspot for discovering, sharing, reviewing and promoting IIS-related solutions in a single place.&amp;nbsp; Dozens of existing downloads, for all versions of IIS &amp;#8211; both from Microsoft and the community &amp;#8211; are already available in DownloadCENTER today.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN lang=EN-US&gt;This new feature of IIS.net is particularly relevant with the release of IIS7 in Windows Vista.&amp;nbsp; The latest release of Microsoft&amp;#8217;s Web server has a completely &lt;A href="http://www.iis.net/default.aspx?tabid=7&amp;amp;subtabid=71" target=_blank&gt;modular&lt;/A&gt; architecture which features over &lt;A href="http://www.iis.net/default.aspx?tabid=7&amp;amp;subtabid=74" target=_blank&gt;forty pluggable components&lt;/A&gt; that can be easily added, removed or even replaced with custom implementations.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN lang=EN-US&gt;This powerful &lt;A href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=1076" target=_blank&gt;extensibility&lt;/A&gt; support is available to both .NET and C/C++ developers.&amp;nbsp; In the future, DownloadCENTER is expected to house a large number of IIS7 extensions submitted by not only the IIS team but the developers and partner ISVs of the IIS community as well.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN lang=EN-US&gt;To learn more about the DownloadCenter, read IIS Product Unit Manager, Bill Staples&amp;#8217; &lt;A href="http://blogs.iis.net/bills/archive/2007/01/28/iis-net-downloadcenter-is-now-live.aspx"&gt;blog post&lt;/A&gt; about it or check it out yourself today!&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/680.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2007/02/01/680.aspx</guid>
            <pubDate>Thu, 01 Feb 2007 19:36:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/680.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2007/02/01/680.aspx#feedback</comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/680.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Christchurch .NET Users Group Meeting - June 21st, 2006</title>
            <link>http://blog.crowe.co.nz/blog/archive/2006/06/23/659.aspx</link>
            <description>&lt;P&gt;I had the pleasure to present to the Christchurch .NET Users Group ( &lt;A href="http://www.net.nz/"&gt;http://www.dot.net.nz&lt;/A&gt; ) last evening. It was a very cold night with hail, sleet, rain and we had around 25 people attend.&lt;/P&gt;
&lt;P&gt;I spoke about three topics in my presentation:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="#IIS Scripting"&gt;IIS Scripting&lt;/A&gt; 
&lt;LI&gt;&lt;A href="#IIS Diagnostic Tools"&gt;IIS Diagnostic Tools&lt;/A&gt; 
&lt;LI&gt;&lt;A href="#IIS7"&gt;IIS 7&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;&lt;A name="IIS Scripting"&gt;IIS Scripting&lt;/A&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;In the talk on IIS Scripting I discussed the different providers that were available to manage IIS from a command line script or application. These include ADSI and WMI, Admin Base Objects and the new IIS 7 Managed Provider.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;References:&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;ADSI Provider&lt;BR&gt;&lt;/B&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/965cc820-753b-4ab7-b1c4-8ab43d67e410.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/965cc820-753b-4ab7-b1c4-8ab43d67e410.asp&lt;/A&gt;&lt;BR&gt;&amp;nbsp; 
&lt;LI&gt;&lt;B&gt;WMI Provider&lt;BR&gt;&lt;/B&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/8b7799c1-cebc-4b11-b3d5-34ab7b728077.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/8b7799c1-cebc-4b11-b3d5-34ab7b728077.asp&lt;/A&gt;&lt;BR&gt;&amp;nbsp; 
&lt;LI&gt;&lt;B&gt;Admin Base Objects&lt;BR&gt;&lt;/B&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/6f6a0cfa-4f2b-4641-88c5-2a1767f6fbc8.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/6f6a0cfa-4f2b-4641-88c5-2a1767f6fbc8.asp&lt;/A&gt;&lt;B&gt; &lt;BR&gt;&amp;nbsp;&lt;/B&gt; 
&lt;LI&gt;&lt;B&gt;IIS7 Managed Provider - Microsoft.Web.Administration &lt;BR&gt;&lt;/B&gt;&lt;A href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=952"&gt;http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=952&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;&lt;A name="IIS Diagnostic Tools"&gt;IIS Diagnostic Tools&lt;/A&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;In the discussion about IIS diagnostic tools I presented details on the following tools from the Debug Diagnostic Toolkit for IIS. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Authentication and Access Control Diagnostics&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Authentication and Access Control Diagnostics (Authdiag) Version 1.0 allows you to review, test, and correct problems with Internet Information Services (IIS) authentication and authorization. You can use Authdiag to check settings on Web sites, FTP sites, virtual directories, Web directories, and files. Authdiag can help you troubleshoot the following types of issues:&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;SSL Diagnostics&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;It provides a centralized location to display all relevant SSL configuration information. Most of this information is stored in the metabase, which is the main IIS configuration file. Information related to certificates is also stored in the Windows registry. &lt;BR&gt;&lt;BR&gt;SSL Diagnostics checks for the correct configuration of SSL objects and settings. These include client and server certificates, ports, private keys, and Web site states.&lt;BR&gt;&lt;BR&gt;Administrators can test whether their current server certificate is working properly by temporarily replacing the current certificate with a self-signed certificate. Administrators are able to test their certificates with a single click of the mouse.&lt;BR&gt;&lt;BR&gt;Administrators can use SSL Diagnostics to quickly simulate the connection, or handshake, between the server and browser, and review the response from the server. This is very helpful for determining where in the SSL handshake process the connection is breaking down.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN class=itemdescription&gt;Debug Diagnostics&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN class=itemdescription&gt;Debug Diagnostics (DebugDiag) 1.0 is a comprehensive tool designed to help IIS administrators or developers determine why a IIS worker process is crashing, hanging, or memory leak. It offers a simple User Interface to build rules for capturing these common problems with web applications and also offers a built-in analysis system&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;References:&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;IIS Debug Diagnostic Tool Kit (6 MB)&lt;BR&gt;&lt;/B&gt;&lt;A href="http://www.iis.net/default.aspx?tabid=3&amp;amp;subtabid=31&amp;amp;g=5&amp;amp;i=895"&gt;http://www.iis.net/default.aspx?tabid=3&amp;amp;subtabid=31&amp;amp;g=5&amp;amp;i=895&lt;/A&gt; &lt;BR&gt;&amp;nbsp; 
&lt;LI&gt;&lt;B&gt;Microsoft Log Parser 2.2&lt;/B&gt;&lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&amp;amp;displaylang=en&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.logparser.com/" target=_blank&gt;www.logparser.com&lt;/A&gt;&lt;BR&gt;&amp;nbsp; 
&lt;LI&gt;&lt;B&gt;Fiddler - HTTP Debugging Proxy Server&lt;BR&gt;&lt;/B&gt;&lt;A href="http://www.fiddlertool.com/"&gt;www.fiddlertool.com&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;&lt;A name=IIS7&gt;IIS7&lt;/A&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;In the IIS 7 section of the presentation I discussed some of the benefits of the new server and its new modular architecture, new UI, new extensibility, and diagnostics functionality.&lt;/P&gt;
&lt;P&gt;I showed a number of demos of IIS 7 including a custom Basic Authentication module, a custom Directory Browsing Module, Tracing Features, Debugging a crashing application pool with Debug Diag and some features of the new User Interface.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;References&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The new official IIS Community Home&lt;BR&gt;&lt;A href="http://www.iis.net/"&gt;www.iis.net&lt;/A&gt; 
&lt;LI&gt;Try IIS7 today in your web browser&lt;BR&gt;&lt;A href="http://www.microsoftvirtuallabs.com/iisnet/"&gt;http://www.microsoftvirtuallabs.com/iisnet/&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;My presentation was made on the Beta 2 build of Vista Ultimate and most of the tools worked fine on Vista and IIS 7 even though they are not designed to. As far as I know no body left early - a good sign.... IIS can be a dry topic to developers but I hope they learned something useful about the new product and of course scripting and diagnostics that they may not have known previously.&lt;/P&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/659.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2006/06/23/659.aspx</guid>
            <pubDate>Fri, 23 Jun 2006 19:29:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/659.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2006/06/23/659.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/659.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Preventing Log Evasion in IIS</title>
            <link>http://blog.crowe.co.nz/blog/archive/2005/08/29/237.aspx</link>
            <description>&lt;P&gt;One of the most important functions a Web site has is the ability to track who is visiting it, where they are coming from, and what they are doing. While logs themselves may not always be the most accurate measurement of what's going on, they do provide a high level overview useful for tracking common user functions and tasks. There are instances when certain types of data aren't logged such as referrers, cookies, user agents, and POST data. Logging can also be used to track abnormal behavior including malicious requests sent by a potential attacker trying to break into your site. These logs can be extremely valuable in identifying if an attack was successful or not, as well as some of the exact commands that an attacker may have executed. &lt;/P&gt;
&lt;P&gt;For more details see the full article at &lt;A href="http://www.webappsec.org/projects/articles/082905.shtml"&gt;http://www.webappsec.org/projects/articles/082905.shtml&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/237.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe [IIS MVP]</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2005/08/29/237.aspx</guid>
            <pubDate>Mon, 29 Aug 2005 07:24:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/237.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2005/08/29/237.aspx#feedback</comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/237.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Log Parser - Different Output Formats available</title>
            <link>http://blog.crowe.co.nz/blog/archive/2005/08/24/229.aspx</link>
            <description>&lt;P&gt;In this blog entry we will display the same output in a number of different formats that Log Parser is capable of providing.&lt;/P&gt;
&lt;H3&gt;Default&lt;/H3&gt;
&lt;P&gt;Using the default output format the results are displayed inside of the command prompt.&lt;/P&gt;
&lt;TABLE id=table3 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;SELECT top 25 distinct c-ip as ClientIP, Count(*) as Hits&lt;BR&gt;FROM \\sbs2003\LogFiles\W3SVC68783193\ex0508*.log&lt;BR&gt;group by c-ip&lt;BR&gt;order by Hits, c-ip desc&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;B&gt;&lt;BR&gt;Command Line&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;&lt;B&gt;LogParser.exe file:distinctclientrequests.sql&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Output&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=290 src="/images/LogParserOutputDefault.gif" width=669 border=0&gt;&lt;/P&gt;
&lt;P&gt;Notice in the above listing you get a "&lt;B&gt;Press a key...&lt;/B&gt;" displayed you can turn this off if you use the &lt;B&gt;-rtp:-1&lt;/B&gt; switch&lt;/P&gt;
&lt;H3&gt;Chart&lt;/H3&gt;
&lt;P&gt;Using an output format of a chart you can create nice graphs of log entries&lt;/P&gt;
&lt;TABLE id=table1 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;SELECT top 25 distinct c-ip as ClientIP, Count(*) as Hits&lt;BR&gt;&lt;B&gt;into test.gif&lt;/B&gt;&lt;BR&gt;FROM \\sbs2003\LogFiles\W3SVC68783193\ex0508*.log&lt;BR&gt;group by c-ip&lt;BR&gt;order by Hits, c-ip desc&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;B&gt;&lt;BR&gt;Command Line&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;&lt;B&gt;LogParser.exe file:distinctclientrequests.sql -view&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Output&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;The output in this case is a file on disk called &lt;B&gt;test.gif&lt;/B&gt;. and the &lt;B&gt;-view&lt;/B&gt; parameter displays it in a window. &lt;/P&gt;
&lt;P&gt;&lt;IMG height=506 src="/images/LogParserOutputChart.gif" width=646 border=0&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;DataGrid&lt;/H3&gt;
&lt;P&gt;Using an output format of a DataGrid you can view the results inside of a grid which is a lot easier for viewing the results in certain circumstances.&lt;/P&gt;
&lt;TABLE id=table2 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;SELECT top 25 distinct c-ip as ClientIP, Count(*) as Hits&lt;BR&gt;&lt;B&gt;into DATAGRID&lt;/B&gt;&lt;BR&gt;FROM \\sbs2003\LogFiles\W3SVC68783193\ex0508*.log&lt;BR&gt;group by c-ip&lt;BR&gt;order by Hits, c-ip desc&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;B&gt;&lt;BR&gt;Command Line&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;&lt;B&gt;LogParser.exe file:distinctclientrequests.sql &lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Output&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=281 src="/images/LogParserOutputDataGrid.gif" width=412 border=0&gt;&lt;/P&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/229.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe [IIS MVP]</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2005/08/24/229.aspx</guid>
            <pubDate>Wed, 24 Aug 2005 22:41:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/229.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2005/08/24/229.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/229.aspx</wfw:commentRss>
        </item>
        <item>
            <title>LogParser - How to retreive the log filename where a LogFileEntry is from.</title>
            <link>http://blog.crowe.co.nz/blog/archive/2005/08/24/228.aspx</link>
            <description>&lt;P&gt;When using Log Parser you may want to include the log file name that the client data was extracted from. If you are using the W3C format you can do this with the &lt;STRONG&gt;LogFilename&lt;/STRONG&gt; input field which will return the full path to the log filename that contains the row of data.&lt;/P&gt;
&lt;P&gt;Save the data below as &lt;B&gt;distinctclientrequests.sql&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE id=table2 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;SELECT&amp;nbsp;top 25 distinct LogFilename, c-ip as ClientIP, Count(*) as Hits&lt;BR&gt;FROM &lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex0508*.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex0508*.log&lt;/A&gt;&lt;BR&gt;group by c-ip, LogFilename&lt;BR&gt;order by Hits, c-ip desc&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Command Line&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#800080&gt;LogParser.exe file:distinctclientrequests.sql&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Example Output:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE id=table1 style="BORDER-COLLAPSE: collapse" cellPadding=2 bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#808000&gt;&lt;B&gt;&lt;FONT color=#ffffff&gt;LogFilename&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD bgColor=#808000&gt;&lt;B&gt;&lt;FONT color=#ffffff&gt;ClientIP&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD bgColor=#808000&gt;&lt;B&gt;&lt;FONT color=#ffffff&gt;Hits&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050819.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex050819.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;2791&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050809.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex050809.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;2296&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050807.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex050807.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;218.101.54.21&lt;/TD&gt;
&lt;TD&gt;2262&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050806.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex050806.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;1967&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050811.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex050811.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;1838&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050808.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex050808.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;218.101.54.21&lt;/TD&gt;
&lt;TD&gt;1744&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050810.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex050810.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;1441&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050804.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex050804.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;218.101.54.21&lt;/TD&gt;
&lt;TD&gt;1372&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050811.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex050811.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;218.101.54.21&lt;/TD&gt;
&lt;TD&gt;1243&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050824.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex050824.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;965&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;If you are wanting to only get the &lt;B&gt;log filename&lt;/B&gt; and not the full path you could use the following query:&lt;/P&gt;
&lt;P&gt;Save the data below as &lt;B&gt;distinctclientrequests.sql&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE id=table5 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;SELECT&amp;nbsp;top 25 distinct &lt;B&gt;EXTRACT_FILENAME&lt;/B&gt;(LogFilename) as LogFile, c-ip as ClientIP, Count(*) as Hits&lt;BR&gt;FROM &lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex0508*.log"&gt;\\sbs2003\LogFiles\W3SVC68783193\ex0508*.log&lt;/A&gt;&lt;BR&gt;group by c-ip, LogFile&lt;BR&gt;order by Hits, c-ip desc&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Command Line&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr&gt;&lt;B&gt;&lt;FONT color=#800080&gt;LogParser.exe file:distinctclientrequests.sql&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Example Output:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE id=table6 style="BORDER-COLLAPSE: collapse" cellPadding=2 bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#808000&gt;&lt;B&gt;&lt;FONT color=#ffffff&gt;LogFile&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD bgColor=#808000&gt;&lt;B&gt;&lt;FONT color=#ffffff&gt;ClientIP&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD bgColor=#808000&gt;&lt;B&gt;&lt;FONT color=#ffffff&gt;Hits&lt;/FONT&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://ex050819.log/"&gt;ex050819.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;2791&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050809.log"&gt;ex050809.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;2296&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050807.log"&gt;ex050807.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;218.101.54.21&lt;/TD&gt;
&lt;TD&gt;2262&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050806.log"&gt;ex050806.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;1967&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://sbs2003/LogFiles/W3SVC68783193/ex050811.log"&gt;ex050811.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;1838&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://ex050808.log/"&gt;ex050808.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;218.101.54.21&lt;/TD&gt;
&lt;TD&gt;1744&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://ex050810.log/"&gt;ex050810.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;1441&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://ex050804.log/"&gt;ex050804.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;218.101.54.21&lt;/TD&gt;
&lt;TD&gt;1372&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://ex050811.log/"&gt;ex050811.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;218.101.54.21&lt;/TD&gt;
&lt;TD&gt;1243&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href="file://ex050824.log/"&gt;ex050824.log&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;192.168.2.1&lt;/TD&gt;
&lt;TD&gt;965&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/228.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe [IIS MVP]</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2005/08/24/228.aspx</guid>
            <pubDate>Wed, 24 Aug 2005 21:46:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/228.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2005/08/24/228.aspx#feedback</comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/228.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Log Parser - Sample - How to return the number of files and their size in a folder and all child folders.</title>
            <link>http://blog.crowe.co.nz/blog/archive/2005/08/10/208.aspx</link>
            <description>&lt;P&gt;The Log Parser 2.2 and greater is a very powerful little tool for things that you may not even think about such as enumerating the number of files in a folder and the size that they are consuming.&lt;/P&gt;
&lt;P&gt;With these examples we will be using the &lt;STRONG&gt;-i:FS&lt;/STRONG&gt; input parameter which means we are getting our data from the File System.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Example 1&lt;/STRONG&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;The command below will return the total number of files and the size of those files in the c&lt;B&gt;:\temp folder&lt;/B&gt; and all child folders.&lt;/P&gt;
&lt;TABLE id=table1 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 width="90%" bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;LogParser.exe &lt;FONT color=#a52a2a&gt;"SELECT count(Size) as [Total Files], sum(Size) as Size FROM 'c:\temp\*.*' "&lt;/FONT&gt; -i:FS&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&lt;FONT color=#800080&gt;&lt;B&gt;Note: The command line above should be entered on a single line.&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The resulting output is similar to this: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Total Files&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size&lt;BR&gt;-----------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;----------&lt;BR&gt;3154&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; 3856346363&lt;BR&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;STRONG&gt;Example 2&lt;/STRONG&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;To restrict the returned details where files start with the letter '&lt;B&gt;A'&lt;/B&gt; you can use this command:&lt;/P&gt;
&lt;TABLE id=table2 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 width="90%" bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;LogParser.exe &lt;FONT color=#a52a2a&gt;"SELECT count(Size) as [Total Files], sum(Size) as Size FROM c:\temp\*.* where Name like 'A%' "&lt;/FONT&gt; -i:FS &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;&lt;B&gt;Note: The command line above should be entered on a single line.&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The resulting output is similar to this:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Total Files&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size&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;BR&gt;98&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; 336363 &lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Example 3&lt;/STRONG&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;To restrict the returned details where files that have an extension of '&lt;B&gt;XML&lt;/B&gt;' you can use this command:&lt;/P&gt;
&lt;TABLE id=table3 style="BORDER-COLLAPSE: collapse" cellSpacing=1 cellPadding=5 width="90%" bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;LogParser.exe &lt;FONT color=#a52a2a&gt;"SELECT count(Size) as [Total Files], sum(Size) as Size FROM c:\temp\*.* where EXTRACT_EXTENSION(Name) = 'xml' "&lt;/FONT&gt; -i:FS &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;&lt;B&gt;Note: The command line above should be entered on a single line.&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The resulting output is similar to this:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Total Files&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size&lt;BR&gt;-----------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----------&lt;BR&gt;16&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; 234374&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/STRONG&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The 3 examples above have all defaulted to recursively searching all child folders. You can control this with the &lt;B&gt;recurse&lt;/B&gt; parameter.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;-recurse:-1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unlimited depth 
&lt;LI&gt;-recurse:0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Disable recursion 
&lt;LI&gt;-recurse:5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Recursively search to a maximum depth of 5 folders&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;Example 4 &lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Return the total XML files and size, recursively searching folders to a depth of two.&lt;/P&gt;
&lt;TABLE id=table4 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 width="90%" bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;LogParser.exe &lt;FONT color=#a52a2a&gt;"SELECT count(Size) as [Total Files], sum(Size) as Size FROM c:\temp\*.* where EXTRACT_EXTENSION(Name) = 'xml' "&lt;/FONT&gt; -i:FS -recurse:2&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;&lt;B&gt;Note: The command line above should be entered on a single line.&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The resulting output is similar to this:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Total Files&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size&lt;BR&gt;-----------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----------&lt;BR&gt;26&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; 433224&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Example 5&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Return the filename, and calculates the MD5 hash of the content of the XML files in the current folder.&lt;/P&gt;
&lt;TABLE id=table5 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 width="90%" bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;LogParser.exe &lt;FONT color=#a52a2a&gt;"&lt;/FONT&gt;&lt;FONT color=#800000&gt;SELECT &lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT color=#800000&gt;&lt;B&gt;Name, HASHMD5_FILE(Path)&lt;/B&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color=#800000&gt; FROM c:\temp\*.* where EXTRACT_EXTENSION(Name) = 'xml' &lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;"&lt;/FONT&gt; -i:FS -recurse:0&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;&lt;B&gt;Note: The command line above should be entered on a single line.&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The resulting output is similar to this:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HASHMD5_FILE(Path)&lt;BR&gt;-------------- --------------------------------&lt;BR&gt;1.xml&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7F404D2B02690712C4800D03928FE292&lt;BR&gt;2.xml&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 60F3600467DD164D9D748D3DCB212CE6&lt;BR&gt;3.xml&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B72BABBC411445B5BAA144983046E57A&lt;BR&gt;4.xml&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 893D233CFCD8A07666960303C7F35657&lt;BR&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Example 6&lt;/B&gt;&lt;/STRONG&gt; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Create a chart of the number of files in &lt;A href="file:///c:/temp"&gt;c:\temp&lt;/A&gt; and break it down by file type, and displays it (it also writes a file called chart.gif). ( &lt;B&gt;very powerful&lt;/B&gt; )&lt;/P&gt;
&lt;TABLE id=table6 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 width="90%" bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;B&gt;LogParser.exe &lt;FONT color=#800000&gt;"SELECT EXTRACT_EXTENSION(Name), count(Size) into chart.gif FROM c:\temp\*.* group by EXTRACT_EXTENSION(name)"&lt;/FONT&gt; -i:FS -view -charttitle &lt;FONT color=#800000&gt;"Count of files by type in c:\temp"&lt;/FONT&gt;&lt;/B&gt; &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;&lt;B&gt;Note: The command line above should be entered on a single line.&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The resulting output is similar to this:&lt;/P&gt;
&lt;P&gt;&lt;IMG height=480 src="/images/chart.gif" width=640 border=0&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/208.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe [IIS MVP]</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2005/08/10/208.aspx</guid>
            <pubDate>Thu, 11 Aug 2005 03:34:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/208.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2005/08/10/208.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/208.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Freeware - IIS / Tools / Log Files / Microsoft Log Parser 2.2</title>
            <link>http://blog.crowe.co.nz/blog/archive/2005/08/07/169.aspx</link>
            <description>&lt;P&gt;Microsoft Log Parser is a very cool little tool that you can use with a SQL query language to render details from a number of different log file formats including:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;IIS log files in the NCSA Common, Combined, and Extended Log File Formats 
&lt;LI&gt;IIS log files in the Microsoft Log File Format. 
&lt;LI&gt;IIS log files in the W3C Extended Log File Format 
&lt;LI&gt;IIS log files in the Centralized Binary Log File Format 
&lt;LI&gt;IIS when configured to log in the ODBC Log Format &lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;Active Directory Objects 
&lt;LI&gt;Comma, Tab and Space Delimited Text Files 
&lt;LI&gt;Enterprise Tracing for Windows trace log files (.etl files) and live ETW trace sessions 
&lt;LI&gt;Windows Event Log and from Event Log backup files (.evt files). 
&lt;LI&gt;Files and Directories 
&lt;LI&gt;HTTP Error log files created by the Http.sys driver (IIS 6+ ) 
&lt;LI&gt;NETMON input format parses network capture files (.cap files) captured by the Network Monitor program (or exported from Ethereal) 
&lt;LI&gt;Registry Values 
&lt;LI&gt;Generic text files. 
&lt;LI&gt;URLScan IIS filter log files 
&lt;LI&gt;W3C Extended Log File Format 
&lt;LI&gt;XML Files &lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;Your Own Custom Plugins&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;You tell Log Parser what information you need and how you want it processed. &lt;/P&gt;
&lt;P&gt;The results of your query can be custom-formatted in text based output, or they can be persisted to more specialty targets like SQL, SYSLOG, or a chart.  &lt;/P&gt;
&lt;P&gt;An example query:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;STRONG&gt;SELECT TOP 10 cs-uri-stem, COUNT(*)&lt;BR&gt;FROM ex040305.log&lt;BR&gt;GROUP BY cs-uri-stem&lt;BR&gt;ORDER BY COUNT(*) DESC&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;For more details on Log Parser see &lt;A href="http://www.microsoft.com/technet/scriptcenter/tools/logparser/default.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/tools/logparser/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The Unoffical Log Parser web site created and maintained by Mike Gunderloy see &lt;A href="http://www.logparser.com/"&gt;http://www.logparser.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;For some additional scripts and code examples for using Log Parser from c# see &lt;A href="http://www.logparser.com/Repository.htm"&gt;http://www.logparser.com/Repository.htm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;A book has been released called the &lt;STRONG&gt;Log Parser Toolkit&lt;/STRONG&gt; - see &lt;A href="http://www.syngress.com/catalog/?pid=3110"&gt;http://www.syngress.com/catalog/?pid=3110&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;For a details explanation of how Log Parse works see &lt;A href="http://www.microsoft.com/technet/community/columns/profwin/pw0505.mspx"&gt;http://www.microsoft.com/technet/community/columns/profwin/pw0505.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;For examples of using the COM interface to Log Parser see &lt;A href="http://www.microsoft.com/technet/community/columns/scripts/sg0105.mspx"&gt;http://www.microsoft.com/technet/community/columns/scripts/sg0105.mspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/169.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe [IIS MVP]</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2005/08/07/169.aspx</guid>
            <pubDate>Sun, 07 Aug 2005 23:43:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/169.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2005/08/07/169.aspx#feedback</comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/169.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>