2010-02-03 4 views
1

Mon journal IIS a un paramètre de requête (cs-uri-requête) qui ressemble à ci-dessousont besoin aider l'analyse d'un journal IIS en 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+" 

Je dois extraire Adresse1, Adresse2, État, ZipCode et Pays de la ligne ci-dessus. Notez également que ces champs ne doivent pas toujours apparaître dans le même ordre.

Quelle est la meilleure et la plus rapide pour analyser cela? J'essaye de le faire en utilisant un outil de ligne de commande C#. Toute autre solution basée sur un script est également très bien.

+1

Utilisation LogParser au lieu http://www.microsoft.com/downloads/details.aspx?FamilyID=890CD06B-ABF8-4C25-91B2-F8D975CF8C07&displaylang=en –

Répondre

0

LogParser est très bon pour ce genre de chose. Il n'est pas nécessaire d'écrire du code C# cependant; vous pouvez accéder à LogParser à partir de la ligne de commande/dans les scripts shell. Et pour extraire les données que vous voulez, la fonction LogParser EXTRACT_TOKEN serait utile. Par exemple, pour obtenir la partie UserInput de cette chaîne de requête, vous pouvez dire:

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

(Parsing vers le bas dans le Adresse1, Adresse2, etc., il faudra appliquer plus imbriqués « extraits » bien sûr.)

Pour plus d'informations sur l'utilisation de EXTRACT_TOKEN, consultez le fichier LogParser.chm fourni avec le package d'installation ou exécutez LogParser -h FUNCTIONS EXTRACT_TOKEN à partir de la ligne de commande.