这是我用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文件中编写此输出? 任何想法。
答案 0 :(得分:2)
而不是自己编写:Log Parser 2.2:
日志解析器功能强大,功能多样 提供通用查询的工具 访问基于文本的数据,如日志 文件,XML文件和CSV文件,如 以及关键数据来源 Windows®等操作系统 事件日志,注册表,文件 系统和ActiveDirectory®。您 告诉Log Parser你有什么信息 需要以及如何处理它。 您的查询结果可以是 基于文本的输出自定义格式, 或者他们可以坚持到更多 专业目标,如SQL,SYSLOG或 图表。
Log Parser的内置输入格式可以从以下来源检索数据:
对于Linux,您可以使用AWStats:
AWStats可以分析很多日志 格式:Apache NCSA组合日志 IIS(XLF / ELF)或通用(CLF)文件 日志文件(W3C),WebStar本机日志 文件和其他网络,代理,wap或 流服务器日志文件(但也 ftp或邮件日志文件)。
答案 1 :(得分:0)
查看filehelpers:www.filehelpers.com,一个用于解析和保存CSV文件的开源.Net库。
非常简单而且非常强大