From 45ab84dda2c6dc64263add3371c510e2794c0154 Mon Sep 17 00:00:00 2001 From: lele555 <3583165504@qq.com> Date: Sat, 3 Oct 2026 11:20:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20q1/main.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- q1/main.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 q1/main.py diff --git a/q1/main.py b/q1/main.py new file mode 100644 index 0000000..520b36e --- /dev/null +++ b/q1/main.py @@ -0,0 +1,46 @@ +import json +import os + +def analyze_log(filepath: str) -> dict: + if not os.path.exists(filepath): + return {} + + total = 0 + by_level = {} + by_user = {} + last_error = None + + try: + with open(filepath, 'r', encoding="utf-8") as f: + first_line = f.readline() + if not first_line.strip(): + return {} + + f.seek(0) + for line in f: + line = line.strip() + if not line: + continue + try: + log_entry = json.loads(line) + level = log_entry["level"] + user = log_entry["user"] + message = log_entry["message"] + except (json.JSONDecodeError, TypeError, KeyError): + continue + + total += 1 + by_level[level] = by_level.get(level, 0) + 1 + by_user[user] = by_user.get(user, 0) + 1 + + if level == "ERROR": + last_error = message + except OSError: + return {} + + return { + "total": total, + "by_level": by_level, + "by_user": by_user, + "last_error": last_error + } \ No newline at end of file