安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > 编程茶楼 > C/C++/C# > C#使用Log Parser 2.2 + MSchart打造简易Windows日志分析工具

C#使用Log Parser 2.2 + MSchart打造简易Windows日志分析工具

时间:2015-10-15来源:未知 作者:安云网点击:
前段时间做了一个简易的Windows日志分析工具(主要针对Windows系统日志SysEvent.Evt这个文件),主要是使用了Log Parser 2.2和MSchart控件,在此和大家分享一下! 首先是Log Parser 2.2,关于它的介绍我就不多说了,下载地址: http://www.micr

前段时间做了一个简易的Windows日志分析工具(主要针对Windows系统日志SysEvent.Evt这个文件),主要是使用了Log Parser 2.2和MSchart控件,在此和大家分享一下!

//ANYUN.ORG

首先是Log Parser 2.2,关于它的介绍我就不多说了,下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=24659 //copyright AnYun.ORG

第一步是安装Log Parser 2.2,然后新建一个C#窗体项目,在资源管理器中选中“引用”右键“添加引用”,选择Log Parser 2.2安装目录下的“LogParser.dll”

//本文来自安云网

 添加引用 //安云网,anyun.org

然后确定返回主窗体页面,添加一个button和一个dataGridView控件,在button的Click事件写入如下代码:

//安云网咨询系统

[html] view plaincopy //本文来自安云网

  1. private void button1_Click(object sender, EventArgs e)   //安云网,anyun.org

  2. {  

    //本文来自安云网

  3.     string sql = @"SELECT EventID, TimeGenerated, SourceName, Message FROM E:\SysEvent.Evt";//此为系统日志文件路径   //copyright AnYun.ORG

  4.     DataTable dt = readFromEvt(sql);   //安云网,anyun.org

  5.     writeToDataBase(dt);   //copyright AnYun.ORG

  6.     dataGridView2.DataSource = dt;  

    //ANYUN.ORG

  7.     MessageBox.Show("读取完毕!");  

    //ANYUN.ORG

  8. }   //安云网,anyun.org

[html] view plaincopy

//安云网,anyun.org

  1. public DataTable readFromEvt(string sql)   //内容来自AnYun.ORG

  2. {  

    //本文来自安云网

  3.     try  

    //安云网,anyun.org

  4.     {  

    //ANYUN.ORG

  5.         DataTable datat = new DataTable();   //内容来自AnYun.ORG

  6.         datat.Columns.Add("事件ID", typeof(string));   //内容来自安云网

  7.         datat.Columns.Add("日期", typeof(string));   //安云网,anyun.org

  8.         datat.Columns.Add("来源", typeof(string));  

    //安云网,anyun.org

  9.         datat.Columns.Add("描述", typeof(string));    //安云网,anyun.org

  10.         // Instantiate the LogQuery object     //安云网咨询系统

  11.         LogQuery oLogQuery = new LogQuery();   //安云网咨询系统

  12.         // Instantiate the Event Log Input Format object     //内容来自安云网

  13.         EvtInputFormat oEvtInputFormat = new EvtInputFormat();  

    //安云网咨询系统

  14.         // Set its "direction" parameter to "BW"    

    //ANYUN.ORG

  15.         oEvtInputFormat.direction = "BW";   //内容来自AnYun.ORG

  16.         // Create the query     //安云网咨询系统

  17.         string query = sql;   //本文来自安云网

  18.         // Execute the query     //安云网,anyun.org

  19.         LogRecordSet oRecordSet = oLogQuery.Execute(query, oEvtInputFormat);   //内容来自安云网

  20.         while (!oRecordSet.atEnd())  

    //安云网,anyun.org

  21.         {   //安云网咨询系统

  22.             var itemData = oRecordSet.getRecord();   //内容来自安云网

  23.             DataRow dr = datat.NewRow();  

    //copyright AnYun.ORG

  24.             dr["事件ID"] = itemData.getValue("EventID").ToString();  

    //内容来自AnYun.ORG

  25.             dr["日期"] = itemData.getValue("TimeGenerated").ToString();   //安云网,anyun.org

  26.             dr["来源"] = itemData.getValue("SourceName").ToString();  

    //内容来自安云网

  27.             dr["描述"] = itemData.getValue("Message").ToString();  

    //ANYUN.ORG

  28.             datat.Rows.Add(dr);  

    //copyright AnYun.ORG

  29.             oRecordSet.moveNext();   //内容来自安云网

  30.         }   //安云网,anyun.org

  31.            //内容来自AnYun.ORG

  32.         // Close the recordset    

    //内容来自AnYun.ORG

  33.         oRecordSet.close();  

    //copyright AnYun.ORG

  34.         return datat;  

    //内容来自安云网

  35.     }  

    //copyright AnYun.ORG

  36.     catch (System.Runtime.InteropServices.COMException exc)   //ANYUN.ORG

  37.     {   //安云网咨询系统

  38.         MessageBox.Show("Unexpected error: " + exc.Message);  

    //内容来自AnYun.ORG

  39.         return null;  

    //ANYUN.ORG

  40.     }    //copyright AnYun.ORG

  41. }  

    //内容来自安云网

至此已经完成了SysEvent.Evt日志文件内容的读取,这里是读取到一个DataTable并且绑定到dataGridView控件上,其中上面代码中还有一个函数writeToDataBase(dt);主要是将这些数据写到数据库中。 //本文来自安云网

接下来是MSchart,VS2010自带这个控件,具体在工具箱数据栏下,名字是“Chart”,如果是VS2008的话还需要下载安装一下,下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=14422,安装好以后,在“工具箱”右键“选择项”,“浏览”在Microsoft Chart Controls安装目录把Assemblies下的dll都添加进去(实际只用System.Windows.Forms.DataVisualization.dll),确定返回工具箱在数据栏下就可以看到“Chart”控件,拖拽一个到窗体上,然后再加入一个button,在button的Click事件写入如下代码:

//本文来自安云网

[html] view plaincopy

//内容来自安云网

  1. private void button3_Click(object sender, EventArgs e)   //copyright AnYun.ORG

  2.         {  

    //copyright AnYun.ORG

  3.             DB db = new DB();  

    //安云网咨询系统

  4.             string sql = @"select top 5 EventID,count(*) as Num from EvevtLog group by EventID order by count(*) desc";  

    //本文来自安云网

  5.             DataTable dt = db.GetDataTable(sql);  

    //本文来自安云网

  6.             dataGridView2.DataSource = dt;  

    //本文来自安云网

  7.             // Set series chart type   //copyright AnYun.ORG

  8.             Chart1.Series[0].ChartType = SeriesChartType.Bar;   //ANYUN.ORG

  9.             // Show as 3D  

    //copyright AnYun.ORG

  10.             Chart1.ChartAreas[0].Area3DStyle.Enable3D = true;   //本文来自安云网

  11.             // Draw as 3D Cylinder   //安云网咨询系统

  12.             Chart1.Series[0]["DrawingStyle"] = "Cylinder";   //安云网,anyun.org

  13.             //Chart1.BackColor = Color.Azure; //图表背景色  

    //copyright AnYun.ORG

  14.             Chart1.Titles.Add("事件"); //图表标题  

    //本文来自安云网

  15.             //设置图表的数据源              

    //内容来自AnYun.ORG

  16.             Chart1.DataSource = dt;  

    //ANYUN.ORG

  17.             //设置图表Y轴对应项  

    //安云网,anyun.org

  18.             Chart1.Series[0].YValueMembers = "Num";  

    //copyright AnYun.ORG

  19.             //Chart1.Series[1].YValueMembers = "Volume2";   //本文来自安云网

  20.             //设置图表X轴对应项   //copyright AnYun.ORG

  21.             Chart1.Series[0].XValueMember = "EventID";  

    //内容来自AnYun.ORG

  22.             Chart1.Series[0].IsValueShownAsLabel = true; //是否显示数据  

    //ANYUN.ORG

  23.             Chart1.Series[0].IsVisibleInLegend = false; //是否显示数据说明  

    //ANYUN.ORG

  24.             Chart1.Series[0].MarkerStyle = MarkerStyle.Circle; //线条上的数据点标志类型  

    //本文来自安云网

  25.             Chart1.Series[0].MarkerSize = 8; //标志大小   //内容来自AnYun.ORG

  26.             Chart1.ChartAreas[0].AxisX.LineColor = Color.Blue; //X 轴颜色  

    //copyright AnYun.ORG

  27.             Chart1.ChartAreas[0].AxisY.LineColor = Color.Blue; //Y 轴颜色  

    //本文来自安云网

  28.             Chart1.ChartAreas[0].AxisX.LineWidth = 2; //X 轴宽度   //内容来自安云网

  29.             Chart1.ChartAreas[0].AxisY.LineWidth = 2; //Y 轴宽度   //安云网咨询系统

  30.             Chart1.ChartAreas[0].AxisY.Title = "事件出现频率"; //Y 轴标题  

    //内容来自AnYun.ORG

  31.             //绑定数据   //copyright AnYun.ORG

  32.             Chart1.DataBind();    //内容来自安云网

  33.         }   //内容来自安云网

我这里面db.GetDataTable(sql);是从数据库里抽取数据出来展示,各位其实可以按需选择,关于展示部分,Chart控件很强大,我这里只做了一个统计展示的例子,其他的各位可以深入研究一下,最后看一下效果。

//安云网,anyun.org

效果图

//内容来自安云网


//本文来自安云网

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容