在前后端开发联调前 的提交20260223
This commit is contained in:
61
scripts/ops/analyze_v8_detail.py
Normal file
61
scripts/ops/analyze_v8_detail.py
Normal file
@@ -0,0 +1,61 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""详细分析 v8 日志,提取所有任务状态。"""
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv(Path(__file__).resolve().parents[2] / ".env")
|
||||
from _env_paths import get_output_path
|
||||
|
||||
log_dir = get_output_path("SYSTEM_LOG_ROOT")
|
||||
raw = json.loads((log_dir / "2026-02-21__etl_run_raw_v8.json").read_text("utf-8"))
|
||||
|
||||
error_log = raw.get("error_log", "")
|
||||
output_log = raw.get("output_log", "")
|
||||
full = output_log + "\n" + error_log
|
||||
|
||||
# 更宽泛的匹配
|
||||
success_pat = re.compile(r"任务\s+(\S+)\s+执行成功")
|
||||
fail_pat = re.compile(r"任务\s+(\S+)\s+失败")
|
||||
complete_pat = re.compile(r"(\S+)\s*(?:完成|成功|✅)")
|
||||
|
||||
# 查找所有提到的任务
|
||||
task_pat = re.compile(r"(ODS_FETCH|DWD_LOAD_FROM_ODS|DWS_\w+)")
|
||||
all_tasks = set(task_pat.findall(full))
|
||||
|
||||
print("=== 日志中出现的所有任务 ===")
|
||||
for t in sorted(all_tasks):
|
||||
print(f" {t}")
|
||||
|
||||
print(f"\n=== 成功匹配 ===")
|
||||
for m in success_pat.finditer(full):
|
||||
print(f" ✅ {m.group(1)}")
|
||||
|
||||
print(f"\n=== 失败匹配 ===")
|
||||
for m in fail_pat.finditer(full):
|
||||
print(f" ❌ {m.group(1)}")
|
||||
|
||||
# 查找 DWD 装载详情
|
||||
dwd_pat = re.compile(r"DWD 装载(成功|失败):(\S+?),用时 ([\d.]+)s(?:,err=(.*))?")
|
||||
print(f"\n=== DWD 装载详情 ===")
|
||||
dwd_success = 0
|
||||
dwd_fail = 0
|
||||
for m in dwd_pat.finditer(full):
|
||||
status, table, dur, err = m.groups()
|
||||
icon = "✅" if status == "成功" else "❌"
|
||||
if status == "成功":
|
||||
dwd_success += 1
|
||||
else:
|
||||
dwd_fail += 1
|
||||
line = f" {icon} {table} ({dur}s)"
|
||||
if err:
|
||||
line += f" — {err[:80]}"
|
||||
print(line)
|
||||
print(f" 合计: {dwd_success} 成功, {dwd_fail} 失败")
|
||||
|
||||
# 查找 year -1 相关上下文
|
||||
print(f"\n=== 'year -1' 相关行 ===")
|
||||
for line in full.split("\n"):
|
||||
if "year" in line.lower() and ("-1" in line or "out of range" in line):
|
||||
print(f" {line.strip()[:200]}")
|
||||
Reference in New Issue
Block a user