Анализатор журнала не рассматривает "" как одно поле - PullRequest
2 голосов
/ 09 декабря 2011

Я пытаюсь проанализировать файл журнала IIS с помощью LogParser 2.2, однако у меня возникла проблема, когда дело доходит до агента пользователя, потому что он видит пробелы в следующем агенте пользователя и думает, что это новое поле ...

"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2"

И это не заботится о "" вокруг строки, кто-нибудь знает о том, чтобы заставить его обрабатывать что-либо между "" как одно поле?

спасибо,

p.s. Это из журнала, созданного модулем расширенного ведения журнала IIS.

1 Ответ

0 голосов
/ 11 марта 2013

Это потому, что стандарт w3c не включает использование пробелов, что произойдет, если парсер журнала увидит пробел и предположит, что это новое поле, с кавычками или без них. Со следующей страницы

"Записи состоят из последовательности полей, относящихся к одному HTTP сделка. Поля разделены пробелами, использование табуляции персонажи для этой цели поощряются. Если поле не используется в Конкретный пунктир "-" обозначает пропущенное поле. Директива записи информация о самом процессе регистрации. "

http://www.w3.org/TR/WD-logfile.html

Роберт МакМюррей (Robert McMurray) пишет в блоге о том, как написать COM-плагин, который в моем исследовании, пытающемся решить ту же самую проблему, кажется лучшим решением (если не писать регулярное выражение, заменяющее все пробелы внутри "" на " + ")

http://blogs.iis.net/robert_mcmurray/archive/2013/02/28/advanced-log-parser-part-7-creating-a-generic-input-format-plug-in.aspx

Надеюсь, это поможет

Редактировать: я определил, что есть способ сделать это, см. Следующий пример с использованием поля X-Header-For, которое я вручную добавил в IIS Advanced Logging, важные биты выделены жирным шрифтом.

LogParser.exe "SELECT SUBSTR (X-Header-For, 0, INDEX_OF (X-Header-For, ',')) как [Удаленный Ip], дата, время, cs-uri-stem, s-contentpath , sc-status FROM $ log " -i: W3C -dQuotes ON

...