{"ts":"2026-05-18T10:23:05+00:00","level":"info","event":"skill_start","skill":"data-analyzer","file":"/mnt/user-data/uploads/runoob.csv"}{"ts":"2026-05-18T10:23:05+00:00","level":"info","event":"step_complete","skill":"data-analyzer","step":"clean","rows_removed":3,"elapsed_ms":240}{"ts":"2026-05-18T10:23:07+00:00","level":"info","event":"skill_complete","skill":"data-analyzer","output":"/mnt/user-data/outputs/report.xlsx","elapsed_ms":1830}{"ts":"2026-05-18T10:23:07+00:00","level":"error","event":"step_failed","skill":"data-analyzer","step":"generate_chart","error":"openpyxl not found"}
withopen(log_file, encoding="utf-8")as f: for line in f:
line = line.strip() ifnot line: continue try:
entry = json.loads(line) except json.JSONDecodeError: continue
if __name__ =="__main__":
report = generate_metrics_report(LOG_FILE) print(json.dumps(report, ensure_ascii=False, indent=2))
{"total_runs":42,"total_errors":3,"success_rate":"92.9%","avg_elapsed_ms":1650,"recent_errors":[{"ts":"2026-05-18T09:12:00+00:00","event":"step_failed","step":"generate_chart","error":"openpyxl not found"}]}
执行追踪:记录每步耗时
当某次执行特别慢时,通过步骤级别的耗时记录可以快速定位瓶颈。
实例
# 文件路径:scripts/tracer.py importtime import json importsys from skill_logger import log