2011-02-19 37 views
0

這是我用C#編寫的代碼,它顯示了大小爲110MB的sample.log文件中的包含。從日誌文件中提取特定字段並使用C#將其導出爲csv文件

using System; 
using System.IO; 
using System.Text; 

    class Program 
    { 
     static void Main(string[] args) 
     { 

      FileStream fs = new FileStream("sample.log", FileMode.Open, FileAccess.Read); 
      StreamReader sr = new StreamReader(fs); 
      string StrFromFile; 
      StringBuilder ResultStr = new StringBuilder(); 


      while ((StrFromFile = sr.ReadLine()) != null) 
      { 
      // your separator char seems to be char 1 
      string[] SplitStrs = StrFromFile.Split(new char[] {(char)1});   
      for (int i = 0; i < SplitStrs.Length; i++) 
      { 
       if (SplitStrs[i].StartsWith("52=")) 
       { 
        ResultStr.Append(SplitStrs[i] + " "); 
       } 
       else if (SplitStrs[i].StartsWith("55=")) 
       { 
        ResultStr.Append(SplitStrs[i] + " "); 
       } 
       else if (SplitStrs[i].StartsWith("132=")) 
       { 
        ResultStr.Append(SplitStrs[i] + " "); 
       } 
       else if (SplitStrs[i].StartsWith("133=")) 
       { 
        ResultStr.Append(SplitStrs[i] + " "); 
       } 
       else if (SplitStrs[i].StartsWith("35=")) 
       { 
        ResultStr.Append(SplitStrs[i] + " "); 
       } 
      } 

      Console.WriteLine(ResultStr); 
      ResultStr.Length = 0; 
     } 
      sr.Close(); 
      fs.Close(); 
      Console.ReadKey(); 
     } 
    } 

我得到這個輸出,

輸出:

35=5 52=20101219-18:05:01.522 
35=A 52=20101219-18:06:01.504 
35=A 52=20101219-18:06:02 
35=1 52=20101219-18:06:02 
35=R 52=20101219-18:06:01.847 55=EUR/USD 

現在的問題是我怎麼寫csv文件此輸出? 任何想法。

回答

2

而不是寫你自己:Log Parser 2.2

日誌分析器是一個功能強大,用途廣泛 工具,提供了通用查詢 訪問諸如日誌 文件,XML文件和CSV文件基於文本的數據,作爲 以及諸如 事件日誌,註冊表,文件 系統和Active Directory的Windows操作系統上的關鍵數據源。您 告訴Log Parser您需要什麼信息以及您希望如何處理它。 您的查詢結果可能是 在基於文本的輸出中自定義格式, 或者它們可以被持久保存到更多 專業目標,如SQL,SYSLOG或 圖表。

日誌分析器的內置輸入格式可以從下列來源獲取數據:

  • IIS日誌文件(W3C,IIS,NCSA,集中二進制日誌,HTTP錯誤日誌,URLScan的日誌,ODBC日誌)
  • Windows事件日誌
  • 常規XML,CSV,TSV和W3C - 格式的文本文件(例如交易所跟蹤日誌文件,個人防火牆日誌文件,Windows媒體服務日誌文件,FTP日誌文件,SMTP日誌文件等)
  • Active Directory對象
  • 文件和目錄信息
  • 的NetMon
  • 註冊表。帽捕獲文件
  • 擴展/組合NCSA日誌文件

對於Linux,你可以使用AWStats

的AWStats可以分析大量的日誌 格式:Apache的NCSA組合日誌 文件(XLF/(W3C),WebStar本機日誌 文件和其他web,代理,wap或 流服務器日誌文件(還包括 ftp或郵件日誌文件)。

AWStats logfile analyzer 7.0 Documentation: FAQ

另外:Logparser (Microsoft's one) or similar for Unix?

+0

謝謝我會嘗試。 – vishal 2011-02-19 06:43:46

0

看一看filehelpers:www.filehelpers.com,一個開源的.Net庫,用於分析和保存CSV文件。
非常容易和非常強大

相關問題