文档备案控制台
免费开始使用

# 影刀RPA进阶教程:流程日志系统的搭

影刀RPA进阶教程:流程日志系统的搭建——关键节点日志+错误截图+运行报告

流程半夜跑完了,你只知道“失败了”,但不知道失败在哪一步、当时页面长什么样。

没有日志的流程就像没有黑匣子的飞机,坠毁了都不知道原因。
搭建一个简单的日志系统,关键节点记下来、出错截个图、跑完发个报告,排查问题从一小时缩到三分钟。

我也是被坑过好几次才开始认真做日志的,下面这套方案实测好用。


一、日志系统三件套——节点日志+错误截图+运行报告

组件作用存放位置
关键节点日志记录“做了什么”,方便定位到哪一步本地txt文件 / 输出窗口

picture.image | 错误截图 | 出错时保存页面现场,事后看 | 本地文件夹(按时间命名) | | 运行报告 | 汇总本次运行情况(成功数、失败数、耗时) | 飞书/钉钉消息 / Excel汇总表 |

picture.image

picture.image

picture.image

二、关键节点日志——用“输出日志”写流水账

场景:想知道流程跑到了第几页、采了多少条数据。
核心:在流程的关键位置加上“输出日志”指令,内容包含当前步骤和时间。

操作步骤

  1. 在流程开始时加一条日志:流程开始,时间:{当前时间}

  2. 在翻页前加:开始采集第{页码}页

  3. 在循环内每采10条加一次:已采集{数量}条

  4. 在子流程入口/出口加日志:进入子流程A_登录 / 退出子流程A_登录

  5. 在异常捕获的Catch块里加:出错:{错误信息}

影刀实操示例

picture.image

# 输出日志指令的内容写法
"=== 流程开始 ==="
"当前时间:" + 获取当前时间("yyyy-MM-dd HH:mm:ss")

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/fb9d96acef024b60b228eda06770945b~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782089784&x-signature=k9Sq0QHaJw7SJjZGelJcHYVgkW4%3D)
"开始采集关键词:" + 关键词变量
"第" + str(当前页) + "页采集完成,本页采集" + str(本页数量) + "条"
"流程结束,总计采集" + str(总数量) + "条"

picture.image 日志分级建议

  • INFO:正常步骤(翻页、采集成功)
  • WARNING:可忽略的异常(重试成功、元素缺失)
  • ERROR:导致跳过数据的错误

存储到文件
“输出日志”默认只在影刀的输出窗口显示,流程关闭就没了。
用“写入文本”指令把日志追加到本地文件。

# 每写一条日志,同时写入txt文件
日志内容 = "2025-12-09 14:30:00 - INFO - 开始第3页采集"
写入文本(文件路径="C:\logs\run.log", 内容=日志内容, 追加=True)

三、错误截图——Catch里存现场

场景:流程跑失败了,你想知道当时浏览器显示什么。
核心:在Try-Catch的Catch块里加“截图保存”指令。

操作步骤

  1. 在可能出错的指令外面包上Try-Catch。
  2. 在Catch块的第一行拖入“截图保存”。

picture.image 3. 截图路径用动态变量,避免覆盖。

  1. 可选:同时截取页面HTML源码。

picture.image

代码示例

picture.image

# Catch块里
Try:
    截图保存(路径="C:\error_screenshots\error_" + 获取当前时间("yyyyMMdd_HHmmss") + ".png")
Catch:
    # 截图本身也可能失败,忽略
    输出日志("截图失败")
# 再记录错误信息
输出日志("错误详情:" + 获取最后一次错误信息())

截图命名规范
error_20251209_143050_page3.png(日期_时间_第几页)
这样一眼就知道什么时候、哪一页出错了。

自动清理旧截图
截图多了占硬盘,在流程开始前删除3天前的截图。
用“遍历文件夹”+“判断文件修改时间”+“删除文件”。


四、运行报告——跑完发飞书/钉钉通知

场景:流程跑完了(尤其是定时任务),你想知道跑了多少条、用了多久、有没有失败。
核心:在流程开始记录开始时间,结束时统计结果,通过Webhook发送到飞书/钉钉群。

操作步骤

  1. 流程开始时记录开始时间
  2. 定义三个累计变量:总采集数成功数失败数
  3. 流程结束时计算耗时 = 当前时间 - 开始时间
  4. 组装报告内容(支持Markdown格式)。
  5. 调用“发送HTTP请求”指令,POST到飞书/钉钉机器人。

报告内容示例

## RPA运行报告
**应用名称**:小红书笔记采集  
**开始时间**:2025-12-09 14:00:00  
**结束时间**:2025-12-09 14:08:23  
**总耗时**:8分23秒  
**采集结果**:成功120条 / 失败3条  
**失败原因**:第5页网络超时(已跳过)  
**日志文件**:C:\logs\run.log  
**错误截图**:C:\error_screenshots\error_20251209_140523.png

飞书机器人配置

  1. 在飞书群组里添加“自定义机器人”,获取Webhook URL。
  2. 影刀里拖入“发送HTTP请求”指令,方法POST,URL填Webhook。
  3. Body里写JSON格式:
{
    "msg_type": "text",
    "content": {
        "text": "报告内容"
    }
}

影刀实操
Body内容用“创建JSON”指令组装,或用Python代码拼接字符串。


五、完整日志系统模板(可直接套用)

主流程结构

A_初始化日志()
  ├─ 创建日志文件夹(如果不存在)
  ├─ 删除3天前的旧日志
  └─ 创建本次运行的日志文件

B_主循环()
  ├─ 记录开始时间
  ├─ 循环翻页:
  │    ├─ 输出日志("开始第N页")
  │    ├─ Try:
  │    │    └─ 采集当页数据()
  │    ├─ Catch:
  │    │    ├─ 截图保存(error_N.png)
  │    │    └─ 记录失败数+1
  │    └─ 输出日志("第N页完成,成功M条")
  └─ 计算总耗时

C_发送报告()
  └─ 组装报告 → 发送飞书/钉钉

日志写入辅助子流程

创建一个子流程公共_写日志,接收两个参数:级别(INFO/WARN/ERROR)和内容

内部操作:

  1. 组装完整日志行:时间 [级别] 内容
  2. 输出到影刀输出窗口(用“输出日志”)。
  3. 追加写入到C:\logs\{当天日期}.log

这样每次只需要调用这个子流程,不用重复写“输出日志”+“写入文本”。


六、社区版用户特别提醒

  • 日志文件和截图不占用RPA运行时长,放心写。
  • 但频繁写入文件(每秒一次)会影响性能,建议批量写入(每10条写一次)。
  • 截图文件较大,尽量控制在每张200KB以内(可以在截图指令里降低质量)。

七、常见问题速查

问题原因解决方法
日志文件越来越大没有清理机制流程开始前删除7天前的日志
截图保存失败文件夹不存在先“创建文件夹”
飞书收不到消息Webhook URL错误或网络不通在浏览器访问URL测试,检查是否被拦截
日志里的时间不对时区设置问题用“获取当前时间”指定时区,如+8
Catch里截图时又报错截图指令本身可能失败截图指令也包一层Try(或忽略)

八、推荐资源

  • 飞书自定义机器人文档:搜索“飞书开放平台 自定义机器人”。
  • 影刀官方教程:《日志与调试》(帮助中心搜索“日志”)。
  • 我的习惯:所有重要流程都保留至少7天的日志,出问题能回溯到一周前。
  • 扩展阅读:系列第23篇《常见报错速查》——配合日志定位错误码。

作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论