import json import os def analyze_log(filepath: str) -> dict: """解析 JSON Lines 日志文件,返回统计结果。""" # 结果字典,先填好默认值(也就是空结果) result = { "total": 0, "by_level": {}, "by_user": {}, "last_error": None, } # 文件不存在时,直接返回空结果,不报错 if not os.path.exists(filepath): return result with open(filepath, "r", encoding="utf-8") as f: for line in f: line = line.strip() # 空行跳过 if not line: continue # 某行不是合法 JSON 就跳过这一行,不影响整体解析 try: data = json.loads(line) except json.JSONDecodeError: continue # 成功解析一条,总数加一 result["total"] += 1 # 按 level 计数 level = data["level"] result["by_level"][level] = result["by_level"].get(level, 0) + 1 # 按 user 计数 user = data["user"] result["by_user"][user] = result["by_user"].get(user, 0) + 1 # 记录最后一条 ERROR 的 message if level == "ERROR": result["last_error"] = data["message"] return result