Дополнительно
Разбор файлов журнала apache
Я только начал изучать Python и хотел бы прочитать лог-файл Apache и поместить части каждой строки в различные списки.
строка из файла
172.16.0.3 - - [25/Sep/2002:14:04:19 +0200] "GET / HTTP/1.1" 401 - "" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020827"
согласно сайту Apache формат следующий.
%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\
Я могу открыть файл и просто прочитать его как есть, но я не знаю, как заставить его читать в этом формате, чтобы я мог поместить каждую часть в список.
33
6
Это работа для регулярных выражений.
Например:
В результате будет получен кортеж, содержащий 6 частей информации из строки (в частности, группы в круглых скобках в этом шаблоне):
Используйте регулярное выражение, чтобы разбить строку на отдельные "лексемы":
Другое решение - использовать специальный инструмент, например, http://pypi.python.org/pypi/pylogsparser/0.4.
Я создал библиотеку python, которая делает именно это: apache-log-parser.
Регулярное выражение выглядело ужасно и проблематично, учитывая простоту формата, поэтому я написал эту маленькую сплиттер, который другие могут оказаться полезными, а также:
Добавить в httpd.conf для преобразования логи Апача в JSON.
Теперь вы видите, вы access_logs в формате JSON. Используйте ниже код Python для анализа журналов JSON, который постоянно обновляется.
apacheLogHandler.py