Files
2026-10-03 11:20:13 +08:00

46 lines
1.2 KiB
Python

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
}