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

流程跑完发现数据不对,但不知道哪一步出错了。或者半夜流程失败,第二天早上才看到,浪费了社区版时长。 没有日志系统,排查问题就像大海捞针。

核心方法:在关键节点加“输出日志”记录变量值,出错时自动截屏,运行结束后生成汇总报告。

一、日志系统的三个层次

层次作用实现方式

picture.image | 关键节点日志 | 记录流程执行到哪一步、变量值是多少 | 影刀“输出日志”指令 | | 错误截图 | 出错时保存当前页面截图,事后查看 | try-catch + “屏幕截图”指令 | | 运行报告 | 汇总开始时间、结束时间、成功/失败数量 | 全局变量 + 写入Excel |

picture.image 社区版注意: 日志和截图会占用磁盘空间,建议定期清理。截图指令会消耗运行时长,只在出错时截图,不要每步都截。


二、关键节点日志:知道流程跑到哪了

picture.image

在流程的关键位置插入“输出日志”指令。

操作步骤

picture.image

  1. 在流程开头输出“开始时间”
  2. 每个子流程入口输出“进入xxx子流程”
  3. 循环内每隔10次输出一次进度
  4. 关键变量赋值后输出变量值
  5. 流程结束输出“结束时间”

picture.image

# 流程开头
输出日志:"========== 流程开始 =========="
输出日志:"开始时间:{当前时间}"

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/b794ace0ecda4521a751a589c8791c10~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781916572&x-signature=8P4X5Xkc5V2%2FEqZwuhkDv%2B00HCU%3D)

# B01_Login 子流程开头
输出日志:"--- 进入登录子流程 ---"

# 判断登录状态后

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/604aa9ded68a4a14b93945ae4d71d42a~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781916572&x-signature=7Jzi2QQUgqu41K4JX%2BSLCLJp8pM%3D)
输出日志:"登录状态检查结果:{是否已登录}"

# C01_CollectList 循环内(每10次输出一次)
设置变量:当前索引 = 0
循环列表:商品列表
    如果 当前索引 % 10 == 0
        输出日志:"已处理第{当前索引}条数据,共{列表长度}条"
    当前索引 = 当前索引 + 1

# 流程结束
输出日志:"========== 流程结束 =========="
输出日志:"结束时间:{当前时间}"
输出日志:"共采集{成功数量}条数据"

日志面板在哪? 运行流程后,底部会弹出“输出”面板,所有日志显示在那里。可以右键“导出日志”保存为txt文件。


三、错误截图:出错时保存现场

流程报错时,页面可能已经变化或关闭。在catch块里加入截图指令,把出错时的页面存下来。

操作步骤

  1. 在try-catch的Catch块里加“屏幕截图”指令
  2. 截图保存路径带上时间戳,避免覆盖
  3. 同时输出错误信息和截图路径到日志

picture.image

# 在关键操作外包try-catch
Try
    点击元素://button[text()='提交订单']
Catch
    # 输出错误日志
    输出日志:"点击提交订单失败:{异常信息}"
    
    # 截屏保存
    屏幕截图
        保存路径:"C:\error_screens\error_{当前时间}.png"
        截取区域:整个浏览器窗口
    
    输出日志:"截图已保存:C:\error_screens\error_{当前时间}.png"
    
    # 可选:把错误信息写入单独的Excel
    调用子流程:E01_WriteErrorLog,输入参数:错误信息={异常信息}

注意: 截图指令需要指定保存路径,文件夹必须提前存在。可以在流程开头用“创建文件夹”指令检查。

# 流程开头检查截图文件夹是否存在
判断文件夹是否存在:路径"C:\error_screens"
如果 不存在
    创建文件夹:路径"C:\error_screens"

四、运行报告:汇总一次流程的执行情况

用全局变量记录关键指标,运行结束后写入Excel或发送飞书通知。

全局变量设置示例

picture.image

变量名类型含义
流程开始时间时间流程启动时刻
流程结束时间时间流程结束时刻
成功采集数整数成功采集的商品数量
失败数整数采集失败的商品数量
翻页次数整数总共翻了多少页
最后错误信息文本最后一次报错的内容

picture.image

# 流程开始:初始化全局变量
设置全局变量:流程开始时间 = 当前时间
设置全局变量:成功采集数 = 0
设置全局变量:失败数 = 0
设置全局变量:翻页次数 = 0

# 循环采集商品时
Try
    采集商品...
    成功采集数 = 成功采集数 + 1
Catch
    失败数 = 失败数 + 1
    输出日志:"采集失败,失败数={失败数}"

# 翻页时
点击下一页
翻页次数 = 翻页次数 + 1

# 流程结束:生成报告
设置全局变量:流程结束时间 = 当前时间
计算耗时:流程结束时间 - 流程开始时间 → 存入“运行时长”

# 写入报告到Excel
Excel Workbook打开:文件"C:\运行报告.xlsx",自动创建
写入行数据到表格:起始"A1",行数据["项目","值"]
追加行到表格:行数据["开始时间", 流程开始时间]
追加行到表格:行数据["结束时间", 流程结束时间]
追加行到表格:行数据["运行时长(秒)", 运行时长]
追加行到表格:行数据["成功采集数", 成功采集数]
追加行到表格:行数据["失败数", 失败数]
追加行到表格:行数据["翻页次数", 翻页次数]
Excel Workbook保存并关闭

输出日志:"运行报告已生成,成功{成功采集数}条,失败{失败数}条"

五、发送通知:飞书/钉钉机器人

流程运行完后,自动发送报告到群里,不用每天打开电脑看。

操作步骤(以飞书为例)

  1. 在飞书群组里添加“自定义机器人”,获取webhook地址
  2. 在影刀里用“发送HTTP请求”指令
  3. 构造JSON格式的消息内容
# 影刀指令配置
发送HTTP请求
    请求方式:POST
    URL:https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx
    请求头:Content-Type: application/json
    请求体:
{
    "msg_type": "text",
    "content": {
        "text": "【影刀流程报告】\n开始时间:{流程开始时间}\n结束时间:{流程结束时间}\n成功:{成功采集数}条\n失败:{失败数}条\n详情:{运行报告路径}"
    }
}

钉钉类似,只需要改URL和消息格式。


六、完整日志系统模板

把上面所有内容整合成一个可复用的“日志子流程”。

# 子流程:E01_InitLog(初始化日志系统)
# 在A_Main开头调用

# 创建文件夹
创建文件夹:路径"C:\log_{当前日期}",如存在则跳过

# 初始化全局变量
设置全局变量:日志路径 = "C:\log_{当前日期}"
设置全局变量:流程开始时间 = 当前时间
设置全局变量:成功数 = 0
设置全局变量:失败数 = 0
设置全局变量:错误列表 = []  # 存错误信息

# 输出启动日志
输出日志:"=== 日志系统初始化完成 ==="
输出日志:"日志目录:{日志路径}"

# 子流程:E02_WriteLog(写入日志)
# 输入参数:日志内容(文本)
# 追加到当天的日志文件

文件写入
    文件路径:{日志路径}\run.log
    写入内容:{当前时间} - {日志内容}
    写入方式:追加

# 子流程:E03_OnError(错误处理)
# 输入参数:错误信息(文本)

# 记录到错误列表
错误列表.append(错误信息)
失败数 = 失败数 + 1

# 截图
屏幕截图:保存路径"{日志路径}\error_{错误序号}.png"

# 输出日志
输出日志:"[错误] {错误信息},截图已保存"

# 写入错误日志文件
文件写入:{日志路径}\error.log,内容"{当前时间}|{错误信息}"

# 子流程:E04_GenerateReport(生成报告)

计算耗时
写入报告Excel
# 可选:发送飞书通知

输出日志:"报告生成完成,共{失败数}个错误"

七、日志系统的使用建议

流程规模建议的日志级别截图策略
开发调试阶段详细日志(每步都输出)每步都截图(方便定位)
日常运行(稳定)关键节点日志(子流程进出+错误)仅错误时截图
批量采集(大数量)每100条输出一次进度仅错误时截图
无人值守(夜间)完整日志+结束时发送报告错误时截图+通知

社区版时长优化:

  • 不要每循环都输出日志(IO操作耗时)
  • 不要每步截图
  • 日志文件定期清理(超过7天删除)

八、易错速查表

错误现象原因解决方法
截图保存失败文件夹不存在流程开头用“创建文件夹”指令
日志文件找不到路径用了相对路径改用绝对路径,如C:\logs\
飞书通知没收到webhook地址错了或网络不通先用浏览器访问webhook测试
全局变量在子流程里读不到没有声明全局子流程里用“获取全局变量”指令
日志文件越来越大没有清理机制流程开头检查文件大小,超过10MB就新建

推荐资源

  • 影刀官方帮助中心:搜索“日志”“输出日志”有示例
  • 飞书自定义机器人文档:open.feishu.com(搜索“机器人”)
  • 我的经验:从第一天写流程就加上关键节点日志,后期排查问题能省90%的时间

作者:林焱

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

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