apacheのログから時刻とリクエストURLを取り出す


access_log から POST リクエストの URL と時刻を出力する必要があったので、python (2.6) で抽出するスクリプトを作ってみた。(re.compile に設定している正規表現は LogFormat の設定に応じて修正する必要あり。)

post_log.py

#!/usr/bin/env python
import re
import sys

prog = re.compile(r'(\S+) (\S+) (\S+) \[(?P<time>.*)\] "(?P<action>[^"]*)" (\S+) (\S+) "([^"]*)" "(?P<ua>[^"]*)"')
for l in sys.stdin:
m = prog.match(l)
if m:
if not m.group('action').startswith('POST'):
continue
print(m.group('time'), m.group('action'))
else:
print >> sys.stderr, 'no match:', l

使用法: cat /var/log/httpd/access_log | ./post_log.py