Files
nginx-access-log-parser/nginx-access-log-parser.py
T
2023-04-20 21:33:14 +02:00

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))