IIS6.0日志文件分析代码_1生成访问字段记录到数组中

IIS6.0日志文件分析代码_1生成访问字段记录到数组中,只能处理小体积的LOG文件.系统构思有些欠缺.比如文本文件读取到100行好象就CPU占用率很高.然后程序卡死.升级可考虑用文本文件分割方法设计.升级可考虑直接读一条记录马上写到数据里.

//添加数据库文件IO引用
using System.IO;
using System.Text;
using System.Data;
using System.Data.SqlClient;

//窗体变量定义

/// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.Container components = null;

  private string BinaryFileType;
  private string BinaryFilePath;
  private int BinaryFileLength;
  private int totalLogFileLine=0;
  private static int splitLineNumber=0; 

private void button1_Click(object sender, System.EventArgs e)
  {
   this.button1.Enabled=false;
   //调用打开文件对话框获取要打开的文件WORD文件,RTF文件,文本文件路径名称
   OpenFileDialog opd = new OpenFileDialog();
   opd.InitialDirectory = @"C:/WINDOWS/system32/LogFiles";
   opd.Filter = "日志文档(*.log)|*.log|Word文档(*.doc)|*.doc|文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文档(*.*)|*.*";
   opd.FilterIndex = 1;
   
   if (opd.ShowDialog() == DialogResult.OK && opd.FileName.Length > 0)
   {   
   
    try 
    {     
     BinaryFileType=opd.FileName.Substring(opd.FileName.LastIndexOf(".")+1).ToUpper();
     BinaryFilePath=opd.FileName;
     FileStream   fs   =   new   FileStream(opd.FileName,   FileMode.OpenOrCreate,   FileAccess.Read);  
     BinaryFileLength=(int)fs.Length;

     StreamReader myStreamReader=new StreamReader(fs);//使用StreamReader类来读取文件
     myStreamReader.BaseStream.Seek(0,SeekOrigin.Begin);//从数据流中读取每一行,直到文件的最后一行,并在richTextBox1中显示出内容
     
     this.richTextBox1.Text="";
     string strLine=myStreamReader.ReadLine();

     int LineSoftware=0;
     int LineVersion=0;
     int LineDate=0;
     int LineFields=0;
     int LineContent=0;
     
     ArrayList MySoftwareArray=new ArrayList();
     ArrayList MyVersionArray=new ArrayList();
     ArrayList MyDateArray=new ArrayList();
     ArrayList MyFieldsArray=new ArrayList();
     ArrayList MyContentArray=new ArrayList();
     ArrayList MyLineArray=new ArrayList();

     //定义日志数据表格
     DataTable   MyLogTable   =   new   DataTable();  
     MyLogTable.Columns.Add(new   DataColumn("LogSoftware",typeof(string)));
     MyLogTable.Columns.Add(new   DataColumn("LogVersion",typeof(string)));
     MyLogTable.Columns.Add(new   DataColumn("LogDate",typeof(string)));
     MyLogTable.Columns.Add(new   DataColumn("LogFields",typeof(string)));
     MyLogTable.Columns.Add(new   DataColumn("LogContent",typeof(string)));
          
     while(strLine!=null)
     {
      this.richTextBox1.Text+= strLine+"/n";
      if(strLine.Substring(0,10)=="#Software:")
      {
       LineSoftware+=1;
       MySoftwareArray.Add(strLine.Substring(10,strLine.Length-10));
      }
      else
      {
       if(strLine.Substring(0,9)=="#Version:")
       {
        LineVersion+=1;
        MyVersionArray.Add(strLine.Substring(9,strLine.Length-9));
       }
       else
       {
        if(strLine.Substring(0,6)=="#Date:")
        {
         LineDate+=1;
         MyDateArray.Add(strLine.Substring(6,strLine.Length-6));
        }
        else
        {
         if(strLine.Substring(0,8)=="#Fields:")
         {
          LineFields+=1;
          MyFieldsArray.Add(strLine.Substring(8,strLine.Length-8));
         }
         else
         {
          MyContentArray.Add(strLine);
          DataRow newLogRow=MyLogTable.NewRow();
          newLogRow["LogSoftware"]=MySoftwareArray[splitLineNumber].ToString();
          newLogRow["LogVersion"]=MyVersionArray[splitLineNumber].ToString();
          newLogRow["LogDate"]=MyDateArray[splitLineNumber].ToString();
          newLogRow["LogFields"]=MyFieldsArray[splitLineNumber].ToString();
          newLogRow["LogContent"]=MyContentArray[LineContent].ToString();          
          MyLogTable.Rows.Add(newLogRow);

          if(splitLineNumber!=LineSoftware)
          {
           MyLineArray.Add(LineContent);           
          }
          else
          {
           splitLineNumber+=1;
          }
          
          LineContent+=1; 
          
          //arr[LineContent]=new LogRsData(strLine, "Les Paul", LineContent);          
         }
        }
       }
      }
      strLine=myStreamReader.ReadLine();
      totalLogFileLine+=1;
     }
   
     myStreamReader.Close();//关闭此StreamReader对象    
 
     fs.Close();   
     this.richTextBox1.Text+= ":"+ LineSoftware+":"+LineVersion+":"+LineDate+":"+LineFields+":"+LineContent+"/n";
         
   
     this.dataGrid1.DataSource =MyLogTable;

     this.textBox2.Text=BinaryFilePath;
     this.textBox3.Text="0";
     this.textBox4.Text=totalLogFileLine.ToString();
     this.textBox5.Text=BinaryFileLength.ToString();
    }
    catch(Exception ex)
    {
     MessageBox.Show(ex.Message,"打开文件错误");
    }

   }
   this.button1.Enabled=true;   

  }

原文地址:https://www.cnblogs.com/xqf222/p/3306890.html