2010-02-03 30 views
1

我的IIS日誌,其外觀的查詢參數(CS-URI查詢),如下面需要幫助解析IIS日誌在C#

"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+" 

我需要提取地址1,地址,國家,郵編和國家從上面的線。還要注意這些字段不一定總是以相同的順序出現。

什麼是最好的和快速的方式來解析這個?我試圖做到這一點使用C#命令行工具。任何其他基於腳本的解決方案也很好。

+1

改爲使用LogParser http://www.microsoft.com/downloads/details.aspx?FamilyID=890CD06B-ABF8-4C25-91B2-F8D975CF8C07&displaylang=en – 2010-02-03 23:22:41

回答

0

LOGPARSER的是這樣的事情非常好。然而,編寫C#代碼並不是必須的。您可以從命令行/在shell腳本中訪問LogParser。爲了提取你想要的數據,LogParser函數EXTRACT_TOKEN將會被使用。例如,要獲取查詢字符串的UserInput部分,你可以說:

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

(解析下來到地址1,地址等,將要求申請多個嵌套「提取物」當然)。

有關如何使用EXTRACT_TOKEN的詳細信息,請查看安裝軟件包隨附的LogParser.chm文件,或從命令行運行LogParser -h FUNCTIONS EXTRACT_TOKEN