需要帮助解析c#中的IIS日志

时间:2010-02-03 23:08:54

标签: c# parsing iis

我的IIS日志有一个查询参数(cs-uri-query),如下所示

"TraceId=8c0b8329-f125-4dec-90af-f508674284f5,PartnerId=Partner1\r\n,UserInput=Address1:+1234+block+of+XYZ+Street+Address2:+Santa+Fe+Springs+State:+California+ZipCode:+90000+Country:+United+States+"

我需要从上面的行中提取Address1,Address2,State,ZipCode和Country。另请注意,这些字段不必总是以相同的顺序出现。

解析此问题的最佳和最快捷的方法是什么?我试图使用c#命令行工具执行此操作。其他任何基于脚本的解决方案也没问题。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

LogParser非常适合这类事情。但是,没有必要编写C#代码;您可以从命令行/ shell脚本中访问LogParser。要提取所需的数据,LogParser函数EXTRACT_TOKEN将是有用的。例如,要获取该查询字符串的UserInput部分,您可以说:

LogParser -i:IISW3C "SELECT EXTRACT_TOKEN(cs-uri-query, 3, '=') FROM ex10082012.log"

(将其解析为Address1,Address2等,当然需要应用更多嵌套的“提取”。)

有关如何使用EXTRACT_TOKEN的更多信息,请查看安装包附带的LogParser.chm文件,或从命令行运行LogParser -h FUNCTIONS EXTRACT_TOKEN