33 lines
1010 B
Python
33 lines
1010 B
Python
import os
|
|
import re
|
|
import json
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('-f', '--flat', action='store_true')
|
|
args = parser.parse_args()
|
|
|
|
logPath = '/var/log/nginx/'
|
|
logFiles = ['access.log', 'pajonk.kavalanche.net.access.log', 'stock.kavalanche.net.access.log', 'todolist.kavalanche.net.access.log']
|
|
output = []
|
|
|
|
for logFile in logFiles:
|
|
with open(logPath + logFile, 'r') as f:
|
|
logs = f.readlines()
|
|
f.close()
|
|
|
|
logsInFile = []
|
|
|
|
for log in logs:
|
|
regex = re.match('(?P<remote_addr>[^\s]+)\s-\s(?P<remote_user>[^\s]+)\s\[(?P<time_local>[^\]]+)\]\s"(?P<request>[^"]+)"\s(?P<status>\d+)\s(?P<body_bytes_sent>\d+)\s"(?P<http_referer>[^"]+)"\s"(?P<http_user_agent>[^"]+)"', log)
|
|
entry = regex.groupdict();
|
|
if args.flat:
|
|
entry['file'] = logFile
|
|
output.append(entry)
|
|
else:
|
|
logsInFile.append(entry)
|
|
if not args.flat:
|
|
output.append({logFile: logsInFile})
|
|
|
|
print(json.dumps(output))
|