系统运转,少不了分析系统日志,微软有个工具Log
Parser能够帮忙您分析日志。它作用强大,使用简单,能够分析基于文本的日记文件、XML
文件、CSV(逗号分隔符)文件,以及操作系统的轩然大波日志、注册表、文件系统、Active
Directory。它能够像使用 SQL
语句一样查询分析那么些多少,甚至足以把分析结果以各个图片的花样突显出来。

Log Parser能够到微软的网站下载,安装完后,就会有命令行的施行顺序LogParser.exe,供API使用的LogParser.dll及阐明文件LogParser.chm,里面还会有一部分萨姆ple
Code能够供参考.

Log
Parser接济的格式很多,输入格式如下:

图片 1

输出格式如下:

图片 2

通过 .NET Framework 的 COM interop
(COM 交互操作)特性,能够很有益于地在 .NET 应用程序中采纳 Log
Parser,.NET Framework 的 COM interop 是通过 Runtime Callable Wrappers
(凯雷德CW) 来促成对 COM 的操作的,LANDCW 是 .NET 中的二个类。

今天要玩的是,怎么用LogParser.dll来开发更符合的API,其实命令行的做法就能够满足大部份的急需,但有时有时特殊的论断,在命令行情势下就有难度了,比如说,大家必要用程序自动去处理大量的日记文件分析等,所以此时用API就有益很多.

上边我们用.NET封装下LogParser的Com接口,从LogParser的操作流程来看,无非就是例外格式文件的日志文件的输入,通过类SQL的辨析输出大家要求的结果,宗旨算法正是近乎于

          // 初始化LogQuery 对象
            var logQuery = new LogQueryClass();

            // 缓存输入上下文
            if (myInputContext == null)
                myInputContext = GetInputContext();
            // 执行查询  
            var oRecordSet = logQuery.Execute(query, myInputContext);
          
             // 浏览记录
            for (; !oRecordSet.atEnd(); oRecordSet.moveNext())
            {
                // 获取当前的笔录
                ILogRecord logRecord =
oRecordSet.getRecord();             
            }
            oRecordSet.close();

行使OOP格局部封闭疗法装接口,大家很简单的就会得出类似上边包车型客车筹划,类图如下:

图片 3

各样档次的日记的分析主借使格式的两样,通过多少个铺排类去记录各个档次的不比计划,依据布署去变通对应的输入、输出格式类。上面大家就来做个简易的德姆o来演示下IIS日志分析。

      private void QryData()
      {

          //构造查询语句
          StringBuilder query = new StringBuilder("SELECT ");
          if (txtRecord.Text.Trim().Length > 0)
          {
              int rec = 0;
              if (int.TryParse(txtRecord.Text.Trim(), out rec))
              {
                  if (rec > 0)
                  {//如果有值,而且数字大于0,则取数字取得Top n
                      query.Append(" TOP ");
                      query.Append(rec);
                  }
              }
          }
          if (btnLocalTime.Checked)
          {
              query.Append("UserIP,Username,TO_LOCALTIME(TO_TIMESTAMP(date,time)) as LocalTime");
          }
          else
          {
              query.Append("UserIP,Username,TO_TIMESTAMP(date,time) as LocalTime");
          }

          query.Append(",ServiceInstance,HostName,ServerIP,TimeTaken,BytesSent,bytesReceived,StatusCode" +
                       ",Win32StatusCode,RequestType,Target,Parameters " +
                       "FROM ");
          query.Append(openFileDialog1.FileName);
          if (txtWhere.Text.Trim().Length > 0)
          {
              query.Append(" Where ");
              query.Append(txtWhere.Text.Trim());
          }

          IISLogParserConfig config = new IISLogParserConfig()
          {
               Codepage =936,

          };
          IISLogParser logParser = new IISLogParser(config);
          DataTable dt = logParser.RunQuery(query.ToString());
          dataGridView1.DataSource = dt;
      }

那段Code就是把Log读进去,并用DataGrid去显得,借使IIS
Log里的流年不是本地时间,还可用TO_LOCALTIME做时间转移,看那Script,还足以用
Select Top n from
文件路径,那里有少数要注意,路径无法有中文名称,Query有那3个能够用,能够参照表明文件的Query
Syntax章节.

图片 4

只顾:LogParser.dll是索要登记的,倘使没有登记,是会抛出错误音讯,注册的不二法门很简短,也正是挂号Com组件,在命令行格局下
: C:\LogParser>regsvr32 LogParser.dll

代码下载:LogParser.zip

连带文章:

3个强有力的LogParser的UI工具–logparserlizard简介

利用logparser做
房途网日志(Nginx)分析

Log Parser (分析多種 Log
格式的超強工具)

使用 Log Parser 將 IIS LOG 轉入 SQL 2005
Express

Examples (SQL) queries for IIS
Analysis

用LogParser对IIS
日志实行剖析

Log Parser:
功用強大且威名遠播的記錄分析器

相关文章

网站地图xml地图