Log Parser(微软网站下载)是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它可以像使用 SQL 语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。

Log Parser 的安装很简单,没有什么特别的,安装之后,可以在安装目录下找到 LogParser.chm 这个文件,该文件是 LogParser 的帮助文件,为英语语言。

我们简单介绍一下在命令提示符中如何使用 Log Parser。

LogParser.exe 为可执行文件,后跟一个使用 SQL 结构的语句参数进行查询。

C:\Program Files\Log Parser 2.2>LogParser "SELECT TOP 10 * FROM System ORDER BY RecordNumber DESC"

从系统日志(可以从事件查看器中找到)中,选出按 RecordNumber 逆序的前 10 条记录。RecordNumber 是 System 中的一个字段。

我们也可以生成图表:

C:\Program Files\Log Parser 2.2>LogParser "SELECT EventID, Count(*) as 出现次数 INTO Chart.gif FROM System GROUP BY EventID" -chartType:PieExploded3D -groupSize:500x350 -chartTitle:"事件分类"

上述代码中还加了其它参数来确定图表的类型、大小等,得到类似如下图表:

是不是非常的简单,而且很振奋人心,不过这些都不是我们介绍的重点,我们的重点是如何利用 C# 去执行 Log Parser。

通过 .NET Framework 的 COM interop (COM 交互操作)特性,可以很方便地在 .NET 应用程序中使用 Log Parser,.NET Framework 的 COM interop 是通过 Runtime Callable Wrappers (RCW) 来实现对 COM 的操作的,RCW 是 .NET 中的一个类。

我们用 Log Parser 和 C# 打造网站访问统计分析系统,就是用 C# 调用 Log Parser,利用 Log Parser 去分析 IIS 的日志文件。我们这里的日志文件是 W3C 格式的。

程序

我们建立一个 .cs 文件,引入:

using LogQuery = Interop.MSUtil.LogQueryClassClass; using IISInputFormat = Interop.MSUtil.COMIISW3CInputContextClassClass; using LogRecordSet = Interop.MSUtil.ILogRecordset;

类中关键代码如下:

LogQuery oLogQuery = new LogQuery(); IISInputFormat oIISInputFormat = new IISInputFormat(); string query = @"SELECT COUNT(DISTINCT c-ip) AS hits                   FROM 'C:\WINDOWS\system32\Logfiles\W3SVC1\ex070820.log'                   WHERE cs-uri-stem like '%.asp'                   AND sc-status=200"; LogRecordSet oRecordSet = oLogQuery.Execute(query, oIISInputFormat); if (!oRecordSet.atEnd()) {     hits = (int)oRecordSet.getRecord().getValue("hits"); } oRecordSet.close();

看得出来跟使用数据库没有多大区别,查询语句中 c-ip、cs-uri-stem、sc-status 等都是日志文件的字段,直接打开日志文件可以找到这些内容。

编译

程序就完成了,不过还不能直接运行,我们还要对它编译,我们这里是编译成 exe,当然您也可以把它编译成一个 DLL,供 ASP.NET 一类的文件调用。

需要两步,第一步:

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\TlbImp.exe C:\Program Files\Log Parser 2.2\LogParser.dll /out:E:\Interop.MSUtil.dll

直接下载 Interop.MSUtil.dll

TlbImp 全称是 Type Library Importer,它是用于创建 RCW,它通常位于 .NET Framework 的 Bin 目录下。

如果您使用的是 Visual Studio 2005,也可以不使用命令提示符的方式,而在工程中直接导入。

第二步:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc /target:exe /reference:E:\Interop.MSUtil.dll /out:E:\logAnal.exe E:\logAnal.cs

logAnal.cs 是我们前面写的程序,logAnal.exe 是要生成的 exe 文件,Interop.MSUtil.dll 是前面生成的 DLL。

完成了

就是这么简单,没有什么复杂的,通过改变查询语句,可以实现多种统计。

1、导出为execl能打开的格式 logparser -i:evt -o:csv "select * from c:\sec.evt" > d:sec.csv logparser -i:evt -o:csv "select * from security" > d:sec.csv logparser -i:evt -o:nat "select * into a.txt from security"
logparser -i:evt -o:csv "select TimeGenerated,EventID,Message from c:\sec.evt" > d:sec.csv
logparser -i:evt -o:TPL -tpl:EventLogs.tpl "select * into b.html from d:\sec.evt"
使用条件语句: SELECT TimeGenerated, EventTypeName, SourceName FROM System WHERE ( SourceName = 'Service Control Manager' AND EventID >= 7024) OR       ( SourceName = 'W32Time')
SELECT * FROM Security WHERE Message LIKE '%logon%'
A、在iis日志中搜索特殊链接 LogParser -o:csv "SELECT * into a.csv FROM iis.log where EXTRACT_EXTENSION(cs-uri-stem) LIKE 'asp'"
B、最经典的例子,对日志中的url进行归并统计 LogParser -o:csv "SELECT cs-uri-stem, COUNT(*) into a.csv FROM iis.log GROUP BY cs-uri-stem"
c、统计所有日志 LogParser -o:csv "SELECT cs-uri-stem, COUNT(*)into a.csv FROM ex*.log GROUP BY cs-uri-stem" LogParser -i:iisw3c -o:csv "SELECT cs-uri-stem, COUNT(*)into a.csv FROM *.log GROUP BY cs-uri-stem"
d、对文件后缀进行排名 LogParser -i:iisw3c -o:csv "SELECT EXTRACT_EXTENSION(cs-uri-stem) AS PageType, COUNT(*) into a.cssv FROM *.log GROUP BY PageType"
e、得到所有的不重复的链接 LogParser -i:iisw3c -o:csv "SELECT distinct cs-uri-stem into a.csv FROM *.log"
 
 
2、生成百分比饼图 LogParser "SELECT EventID, COUNT(*) AS Times INTO Chart.gif FROM d:\tmp\sec.evt GROUP BY EventID ORDER BY Times DESC" -chartType:PieExploded3D -chartTitle:"Status Codes"
 
3、http日志 LogParser file:querytop.sql -o:chart -chartType:Bar3d -chartTitle:"TOP 10 URL"
querytop.sql: SELECT TOP 10 cs-uri-stem AS Url,    COUNT(*) AS Hits INTO Urls.gif FROM <1> GROUP BY Url ORDER BY Hits DESC
 
 
4、在html页面里找关键字 Return the lines in an HTML document that contain links to other pages: LogParser "SELECT Text FROM http://www.microsoft.adatum.com WHERE Text LIKE '%href%'" -i:TEXTLINE
 
 
5、MD5 Hashes of System Files LogParser "SELECT Path, HASHMD5_FILE(Path) into a.txt FROM C:\Windows\System32\*.exe" -i:FS -recurse:0
 
 
6、Print the 10 largest files on the C: drive: LogParser "SELECT TOP 10 Path, Name, Size FROM C:\*.* ORDER BY Size DESC" -i:FS
 
 
7、获得本机登陆帐户的查看 LogParser.exe -o:nat "SELECT RESOLVE_SID(Sid) AS Account FROM Security WHERE EventID IN (540; 528)"
 
 
8、获得系统日志的分类详细信息 LogParser "SELECT DISTINCT SourceName, EventID,SourceName,message INTO Event_*.csv FROM security" -i:EVT -o:CSV LogParser "SELECT DISTINCT SourceName, EventID,SourceName,message INTO Event_*.csv FROM System" -i:EVT -o:CSV 根据id分类 LogParser "SELECT DISTINCT eventid, EventID,SourceName,message INTO Event_*.csv FROM System" -i:EVT -o:CSV LogParser "SELECT DISTINCT eventid, EventID,SourceName,message INTO Event_*.csv FROM security" -i:EVT -o:CSV
 
 
9、生成图形界面日志 LogParser "SELECT 'Event ID:', EventID, SYSTEM_TIMESTAMP(),message FROM security" -i:EVT -o:datagrid
 
 
10、生成一个Web页面 LogParser file:d:\EventLogs.sql?EventLog=security -o:TPL -tpl:d:\EventLogs.tpl LogParser file:d:\EventLogs.sql?EventLog=system -o:TPL -tpl:d:\EventLogs.tpl
 
 
11、在iis日志里
查看返回代码分布饼图 LogParser "SELECT sc-status, COUNT(*) AS Times INTO Chart.gif FROM iis.log GROUP BY sc-status ORDER BY Times DESC" -chartType:PieExploded3D -chartTitle:"Status Codes"
 
 
 
12、在所有日志中手机前10位的排名 LogParser file:querytop.sql -o:chart -chartType:Bar3d -chartTitle:"TOP 10 URL"
querytop.sql:
SELECT TOP 10 cs-uri-stem AS Url,    COUNT(*) AS Hits INTO Urls.gif FROM ex*.log GROUP BY Url ORDER BY Hits DESC
 
 
 
13、检索目录下所有文件的所有的信息 logparser "select * into a.csv from c:\x-scan\*.*" -i:fs -o:csv
查看每个源IP发了多少个包 LogParser "SELECT srcip ,count(*) into a.csv FROM a.cap group by srcip" -fmode:tcpip -o:csv
查看每个源端口的包的个数 LogParser "SELECT srcport ,count(*) into a.csv FROM a.cap group by srcport" -fmode:tcpip -o:csv
归并所有srcip,dstip,srcport一样的包,得到个数 LogParser "SELECT srcip,dstip,srcport ,count(*) into a.csv FROM a.cap group by srcip,dstip,srcport" -fmode:tcpip -o:csv
归并所有tcpflags的包 LogParser "SELECT srcip,srcport,dstip,dstport,tcpflags,count(*) into a.csv FROM a.cap where tcpflags='AF' group by srcip,srcport,dstip,dstport,tcpflags" -fmode:tcpip -o:csv
tcpflags的分布饼图 LogParser "SELECT tcpflags,count(*) into a.gif FROM a.cap group by tcpflags " -fmode:tcpip -chartType:PieExploded3D -chartTitle:"Status Codes" LogParser "SELECT tcpflags,count(*) into a.csv FROM a.cap group by tcpflags " -fmode:tcpip -o:csv

Log Parser 微软强大的日志分析工具的更多相关文章

  1. 强大的日志分析工具 -- NSLogger

    转:http://www.cnblogs.com/yingkong1987/p/3329945.html 强大的日志分析工具 -- NSLogger 源码:https://github.com/fpi ...

  2. IIS日志分析工具

    发现一个强大的图形化IIS日志分析工具:Log Parser Studio. 安装 需要先安装Log Parser下载地址:http://www.microsoft.com/en-us/downloa ...

  3. 【转】gc日志分析工具

    性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...

  4. GC之七--gc日志分析工具

    性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...

  5. GoAccess日志分析工具使用文档

    ----Sevck 2016/3/4 17:24:13 #1软件说明: GoAccess是一款开源.实时,运行在命令行终端下的web日志分析工具.该工具提供快速.多样的HTTP状态统计,可以令管理员不 ...

  6. 可视化日志分析工具Gltail的安装与使用

    可视化日志分析工具Gltail的安装与使用      GlTail.rb 是一款带有浓郁的 Geek 风格的可视化日志分析工具,它采用 Ruby 技术构建,并利用 OpenGL 图形技术进行渲染,呈现 ...

  7. Linux 日志分析工具之awstats

    一.awstats 是什么 官方网站:AWStats is a free powerful and featureful tool that generates advanced web, strea ...

  8. (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest【待完善】

    (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢 ...

  9. (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】

    (3.13)mysql基础深入——mysql 日志分析工具之mysqlsla 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢查询日志分析工具 ...

随机推荐

  1. MJRefreshFooterView

    实例化header和footer _header = [MJRefreshHeaderView header]; _header.scrollView = _tableView; 设置header和f ...

  2. iOS 中SQLite数据库操作

    在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 ...

  3. 谷歌笔试题——排序,只允许0和其他元素交换

    2.2 长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap,请设计并实现排序. 这题有一个隐含条件:即数组元素是连续的,即0--n-1,当你排好序后,你会发现数组元素和该元素的下标 ...

  4. What Can I Do With This Major?

    What Can I Do With This Major? Majors Don’t see your major? Accounting Advertising Africana Studies ...

  5. csuoj 1355: 地雷清除计划

    这是一个非常神奇的题: 感觉像一个模拟搜索: 但是竟然可以用网络流来解决: 直接粘题解把: 如果不能走通的话,必然说明能够从右上角(图外面)沿雷“跳” ,一直可以“跳”左下角(图外面) ,因此建好图之 ...

  6. 安装Ubuntu 14.04后要做的5件事情

    转自安装Ubuntu 14.04后要做的5件事情 Ubuntu目前是世界上最流行的Linux操作系统,它提供了桌面版本和服务器版本,其他流行的Linux发行版本如Linux Mint也是基于Ubunt ...

  7. sql 复杂自动编号错误批量修改方案

    [一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/5133953.html]  前提:自动编号为18位,前4位是年份,中间10位是XXXX,最后四位 ...

  8. Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?

    0.写在前面 本文涉及到屏幕密度的讨论,这里先要搞清楚 DisplayMetrics 的两个变量,摘录官方文档的解释: density:The logical density of the displ ...

  9. Android 自定义ToggleButton+用SharedPreferences保存用户配置

    布局文件:   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi ...

  10. Notification 多次传递参数 一直都是旧的 解决

    参考 :http://blog.163.com/caoguoqiang_dlut/blog/static/10658914220114167219320/ 问题描述: 在service中获取到数据,通 ...