Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
import re
import csv
import urllib
class Parse:
params = re.compile('(?P<key>[\S]*)=\{(?P<value>[\S]*)\}')
prep = re.compile('(?P<key>[\S]*)=(?P<value>[\S]*)')
def __init__(self, file):
self.filename = file
def run(self):
params = []
log = open(self.filename, 'r')
line = log.readline()
while line:
res = self._parse_line(line)
if res:
params.append(self._encode_line(res))
line = log.readline()
self._save(params)
log.close()
def _parse_line(self, line):
result = self.prep.findall(line)
if result and '/solr' in result[0] and '/select' in result[1]:
return self._parse_params(line)
def _parse_params(self, line):
result = self.params.search(line)
if result is not None:
regex = result.groups()
if regex[0] == 'params':
return regex[1]
def _encode_line(self, line):
return urllib.urlencode(dict([sand.split('=', 1) for sand in line.replace('+', ' ').replace('%25', '%').split('&')]))
def _save(self, lines):
with open(self.filename.replace('log', 'csv'), 'w') as csvfile:
writer = csv.writer(csvfile, delimiter=';')
for line in lines:
writer.writerow([line])
parse = Parse('solr-main-2m.log')
parse.run()
@baybatu

This comment has been minimized.

Copy link

@baybatu baybatu commented Nov 8, 2015

Thanks, you made my day!

@umit

This comment has been minimized.

Copy link

@umit umit commented Nov 9, 2015

Thanks, you made my day!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment