从日志文件中提取特定字段并使用C#将其导出到csv文件

时间:2011-02-19 06:27:03

标签: c# linux

这是我用C#编写的代码,它显示了sample.log文件中包含的大小为110MB。

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 个答案:

答案 0 :(得分:2)

而不是自己编写:Log Parser 2.2

  

日志解析器功能强大,功能多样   提供通用查询的工具   访问基于文本的数据,如日志   文件,XML文件和CSV文件,如   以及关键数据来源   Windows®等操作系统   事件日志,注册表,文件   系统和ActiveDirectory®。您   告诉Log Parser你有什么信息   需要以及如何处理它。   您的查询结果可以是   基于文本的输出自定义格式,   或者他们可以坚持到更多   专业目标,如SQL,SYSLOG或   图表。

Log Parser的内置输入格式可以从以下来源检索数据:

  • IIS日志文件(W3C,IIS,NCSA,集中二进制日志,HTTP错误日志,URLScan日志,ODBC日志)
  • Windows事件日志
  • 通用XML,CSV,TSV和W3C格式的文本文件(例如,Exchange跟踪日志文件,个人防火墙日志文件,WindowsMedia®服务日志文件,FTP日志文件,SMTP日志文件等)
  • Windows注册表
  • Active Directory对象
  • 文件和目录信息
  • NetMon .cap捕获文件
  • 扩展/组合NCSA日志文件

对于Linux,您可以使用AWStats

  

AWStats可以分析很多日志   格式:Apache NCSA组合日志   IIS(XLF / ELF)或通用(CLF)文件   日志文件(W3C),WebStar本机日志   文件和其他网络,代理,wap或   流服务器日志文件(但也   ftp或邮件日志文件)。

AWStats logfile analyzer 7.0 Documentation: FAQ

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

答案 1 :(得分:0)

查看filehelpers:www.filehelpers.com,一个用于解析和保存CSV文件的开源.Net库。
非常简单而且非常强大