Created
July 7, 2022 12:49
-
-
Save evjeny/88550162528ef658a2e67111ed34557c to your computer and use it in GitHub Desktop.
log reader for salesdb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import argparse | |
from dataclasses import dataclass | |
import re | |
@dataclass | |
class ParseResult: | |
request_time: float = 0 | |
insert_time: float = 0 | |
def parse_line(line: str) -> ParseResult: | |
search_result = re.findall(r"(\d+\.\d+ seconds.*)(insert|request)", line) | |
if len(search_result) == 0: | |
return ParseResult() | |
number_group, type_group = search_result[-1] | |
number = float(re.findall(r"\d+\.\d+", number_group)[0]) | |
if "request" in type_group: | |
return ParseResult(request_time=number) | |
else: | |
return ParseResult(insert_time=number) | |
def main(log_path: str): | |
with open(log_path) as f: | |
lines = f.readlines() | |
request_times: list[float] = [] | |
insert_times: list[float] = [] | |
for line_res in map(parse_line, lines): | |
req_time: float = line_res.request_time | |
ins_time: float = line_res.insert_time | |
if req_time > 0: | |
request_times.append(req_time) | |
if ins_time > 0: | |
insert_times.append(ins_time) | |
total_request = sum(request_times) | |
count_request = len(request_times) | |
mean_request = total_request / count_request | |
total_insert = sum(insert_times) | |
count_insert = len(insert_times) | |
mean_insert = total_insert / count_insert | |
print(f"{count_request} requests, total time: {total_request:.2f} s, mean: {mean_request:.2f} s") | |
print(f"{count_insert} inserts, total time: {total_insert:.2f} s, mean: {mean_insert:.2f} s") | |
if __name__ == "__main__": | |
parser = argparse.ArgumentParser("SalesDB_fill log analyzer") | |
parser.add_argument("--log_path", type=str, required=True, help="path to log string") | |
args = parser.parse_args() | |
main(args.log_path) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment