Парсер журнала не обрабатывается как одно поле

Я пытаюсь проанализировать файл журнала 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.


person electricsheep    schedule 09.12.2011    source источник


Ответы (1)


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

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

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

Роберт МакМюррей пишет в блоге о том, как написать 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, важные биты выделены жирным шрифтом.

LogParser.exe «ВЫБЕРИТЕ SUBSTR (X-Header-For, 0, INDEX_OF (X-Header-For, ',')) как [удаленный IP-адрес], дату, время, cs-uri-stem, s-contentpath, sc- статус ИЗ $log" -i:W3C -dQuotes ON

person jidar    schedule 11.03.2013
comment
Учитывая цитату из стандарта, разве это не ошибка модуля расширенного ведения журнала IIS? Пользуетесь табуляциями между полями и все ок? - person CodeBuddy; 04.08.2016