From 584b69d45699138bd422ad3c253f441be3c62914 Mon Sep 17 00:00:00 2001 From: zrzz-maker <2123497285@qq.com> Date: Tue, 6 Oct 2026 23:05:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=E3=80=8Cq1=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- q1/main.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ q1/test.py | 13 +++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 q1/main.py create mode 100644 q1/test.py diff --git a/q1/main.py b/q1/main.py new file mode 100644 index 0000000..eb7c33c --- /dev/null +++ b/q1/main.py @@ -0,0 +1,44 @@ +import json +import os +def analyze_log(filepath): + d={ + "total":0, + "by_level":{}, + "by_user":{}, + "last_error":None + } + if not os.path.exists(filepath): + return d + try: + f=open(filepath,'r',encoding='utf-8') + lines=f.readlines() + except: + return d + + for line in lines: + line = line.strip() + if line =="": + continue + try: + data = json.loads(line) + except: + continue + + d["total"]+=1 + + lvl=data["level"] + usr=data["user"] + + if lvl not in d["by_level"]: + d["by_level"][lvl]=0 + d["by_level"][lvl]=d["by_level"][lvl]+1 + + if usr not in d["by_user"]: + d["by_user"][usr]=0 + d["by_user"][usr]=d["by_user"][usr]+1 + + if lvl == "ERROR": + d["last_error"]=data["message"] + + f.close() + return d diff --git a/q1/test.py b/q1/test.py new file mode 100644 index 0000000..731fcdd --- /dev/null +++ b/q1/test.py @@ -0,0 +1,13 @@ +from main import analyze_log +f = open("app.jsonl","w",encoding="utf-8") +f.write('{"timestamp": "2026-10-01 10:23:45", "level": "INFO", "message": "用户登录成功", "user": "张三"}\n') +f.write('{"timestamp": "2026-10-01 10:24:01", "level": "ERROR", "message": "数据库连接失败", "user": "李四"}\n') +f.write('随便写的\n') +f.write('{"timestamp": "2026-10-01 10:27:00", "level": "INFO", "message": "任务完成", "user": "王五"}\n') +f.close() + +res=analyze_log("app.jsonl") +print("总数:",res["total"]) +print("级别统计:",res["by_level"]) +print("用户统计",res["by_user"]) +print("最后一条错误:",res["last_error"]) \ No newline at end of file