2017-01-06 4 views
0
LogFormat "%v %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedvhost 
CustomLog "/var/log/apache2/access_log" combinedvhost  

У меня есть конфигурация apache, создающая access_log с указанным выше форматом журнала. Я пытаюсь создать python (2.7.13) regex, который создает группы (игнорируя HTTP-метод и HTTP-версию).Python regex matching Apache LogFormat "combinationvhost"

Ниже мое регулярное выражение до сих пор:

(?P<host>.*)\s+(?P<ip>\S+)\s+-\s+-\s+\[(?P<date>\S+)\s+(?P<timezone>.*)\]\s+"\S+\s+(?P<path>\S+)(?:\?(?P<querystring>\S+))?\s+\S+"\s+(?P<status>\S+)\s+(?P<length>\S+)\s+"(?P<referrer>.*)"\s+"(?P<user_agent>.*)"\s+ 

Моя проблема заключается в первый лаглинь где ожидаемый результат path = / и querystring = simplode_ajax=true&simplode_query%5Border%5D=DESC. Это швы как мой путь группа соответствие с жадным, хотя, как он возвращает querystring = None и вся строка, как path вместо ...

Я тестировал выше регулярное выражение и ниже бревна в http://pythex.org.

default 1.2.3.4 - - [05/Jan/2017:10:56:18 -0800] "GET /?simplode_ajax=true&simplode_query%5Border%5D=DESC HTTP/1.1" 200 - "http://www.xxx.xx/xxx/xx/" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 
default 1.2.3.4 - - [05/Jan/2017:10:56:20 -0800] "GET /xxx/xx/06/22/xxxxx/ HTTP/1.1" 200 11098 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 
www.xxx.xx 1.2.3.4 - - [05/Jan/2017:10:56:20 -0800] "POST /xxxxxx.php HTTP/1.1" 200 370 "-" "-" 
default 1.2.3.4 - - [05/Jan/2017:10:56:23 -0800] "GET /blog/xxx/01/22/xxxxx/ HTTP/1.1" 200 14404 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 
www.xxx.xx 1.2.3.4 - - [05/Jan/2017:10:56:24 -0800] "GET /blog/xxxxx/ HTTP/1.1" 200 21901 "https://www.codingmerc.com/blog/" "Mozilla/5.0 (compatible; spbot/5.0.3; +http://OpenLinkProfiler.org/bot)" 
www.xxx.xx 1.2.3.4 - - [05/Jan/2017:10:56:25 -0800] "POST /xxxxx.php HTTP/1.1" 200 370 "-" "-" 
www.xxx.xx 1.2.3.4 - - [05/Jan/2017:10:56:29 -0800] "GET /blog/xxxxx/ HTTP/1.1" 200 13831 "https://www.xxx.xx/blog/" "Mozilla/5.0 (compatible; spbot/5.0.3; +http://OpenLinkProfiler.org/bot)" 

ответ

1

Это похоже на работу, если вы просто сделать свой путь группа не жадный: заменить + на +?

+0

Sheesh, это было так просто, да? :) –