☰
影刀RPA新手教程:运行日志三层记录法——出问题3分钟定位
2026/10/11 10:49:08 网站建设 项目流程

影刀RPA新手教程:运行日志三层记录法——出问题3分钟定位

流程半夜挂了,第二天打开一看只有一句"执行异常",具体挂在哪一步、数据长什么样、当时页面是什么状态,全都不知道——这种抓瞎的感觉,我头一年至少经历了二十回。后来我给影刀RPA流程加了三层日志记录,现在出问题基本3分钟内定位到具体指令和数据值,这篇把这套方法完整教给你。

先给新手吃颗定心丸:日志不是什么高深东西,就是在流程的关键位置插"打卡记录"。影刀RPA本身已经给了你三层现成的记录体系——流程内的输出日志、客户端本地日志、控制台执行记录,你缺的只是知道每层看什么、怎么组合着用。

三层日志各管一段:第一层管"流程自己说了什么",第二层管"客户端底层发生了什么",第三层管"哪次运行出了问题"。下面从第一层开始讲。

第一层:流程内「输出日志」指令的三种级别

输出日志指令在指令面板搜"日志"就能找到,往流程里一拖就能用。我把它按用途分成三级,命名上直接区分:

级别记什么例子
节点级进入哪个大模块【采集】开始处理第3页
数据级关键变量的值抓到价格:59.9,共120条
异常级报错信息和现场等待超时,元素:下一页按钮

节点级日志放在每个子流程入口和出口,数据级放在循环体内和写入动作前,异常级放在Try-Catch的Catch块里。Catch块里固定做两件事:「错误截图」加「输出日志」,截图存错误现场,日志记下报错文本和当时的变量值,第二天打开就有完整现场。

有个容易忽略的细节:输出日志有字符串长度限制,官方FAQ写明最大可打印2万个字符左右。别把整张表格一口气丢进日志,循环里逐行打关键列就够了,我打印整表超长那次,日志被截断反而误导了排查方向。

日志格式我统一用"【模块】动作+关键值",比如"【写入】已写入第15行,总行数120"。格式统一的好处是控制台执行记录里扫一眼就能看清卡在哪一步。

带异常捕获的日志骨架:新手直接抄

Try-Catch-Finally是第一层日志的骨架,新手照这个结构搭流程:

# 输入:无;输出:日志文件 night_run.log(追加写)# 结构:Try主流程 / Catch记录现场 / Finally收尾,可直接套用# —— Try块(主流程)——# 1. 输出日志:【启动】开始执行采集流程# 2. 打开网页指令,URL参数填目标地址,打开方式选"新建标签页"# 3. 等待元素出现,超时30秒,元素:商品列表容器# 4. 获取相似元素列表,存入变量 price_list# 5. 输出日志:【采集】共获取条数:len(price_list)# 6. 写入行数据到表格,循环逐行追加写入Excel![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6ac5f8906f3543b1a5d5c5d9e01429fd.png#pic_center)# —— Catch块(异常现场)——# 1. 错误截图指令,保存到 D:\error_shots\,文件名带时间戳# 2. 输出日志:【异常】+ 捕获到的报错文本 + 当前行号变量# —— Finally块(收尾)——# 1. 关闭浏览器# 2. 关闭Excel# 3. 输出日志:【结束】流程退出,无论成败

Python块里也可以自己补一份落盘日志,和控制台日志双保险:

# 输入:step_name(步骤名)、info(附加信息)# 输出:D:\night_run.log 追加一行带时间戳的记录fromdatetimeimportdatetimedeflog_step(step_name,info=''):now=datetime.now().strftime('%m-%d %H:%M:%S')withopen(r'D:\night_run.log','a',encoding='utf-8')asf:f.write(f'[{now}][{step_name}]{info}\n')log_step('采集','第3页完成,累计360条')

第二层:客户端本地日志与导出日志按钮

流程内日志解决"我的流程说了什么",客户端本地日志解决"客户端底层发生了什么"——启动异常、插件失联、登录问题这类流程外的原因,要看第二层。

官方给的查看方法两条路:

  • 快捷键 Win+R 打开运行窗口,输入路径 %localappdata%\ShadowBot\log,回车打开日志文件夹,按时间倒序看最新的日志文件;资源管理器地址栏直接粘贴这个路径也行
  • 5.14版本及之后,在「个人头像右键 → 设置 → 关于影刀 → 导出日志」按钮把日志打包导出到自定义位置

我的习惯是夜间任务挂了先看第三层执行记录确认哪次运行出的事,再开本地日志翻对应时间点,最后回到流程内日志看具体步骤。三层从粗到细,路径固定,练两次就是肌肉记忆。

第三层:控制台执行记录与运行详情

定时任务跑的每一次都有底账。控制台进「任务管理 → 执行记录」,能看到任务执行的详情;点进运行详情,可以结束执行中的计划,对执行出异常的计划查看原因、重新运行异常的应用。所有执行记录统一放在执行记录菜单里,包括API执行记录。

任务监控页还有四个汇总数字:当前执行应用数、等待执行应用数、今日完成应用数、今日执行异常数。每天早上扫一眼"今日执行异常"是否为零,不为零就点进执行记录走一遍三层定位。告警通知也在这个页面配置,邮箱、钉钉、企业微信、飞书都可以接,异常自动推人,不用等你自己发现。

元素定位与等待:让日志里的报错"值得看"

日志定位的前提是报错信息本身有意义。定位不稳定的流程,日志里天天是"找不到元素",噪声太大反而掩盖真问题。所以第一层日志之前先把定位做稳:元素捕获点「捕获元素」按钮,浏览器出现橙色边框点击目标;结构不稳定就用XPath写到属性级,往下找用CSS选择器,往上找、按文本找用XPath。

# 场景:日志报"等待超时"时,先核对这些定位是否还成立 # 唯一id定位,最优先 //*[@id="goods-list"] # class属性定位 //div[@class="item-price"] # 文本模糊匹配,应对文案微调 //*[contains(text(),'立即购买')] # 参照物定位:借"销量"文本找旁边的数字 //*[contains(text(),'销量')]/following-sibling::*[1] # CSS等价写法:父子层级用 > 号更短 #goods-list > .item-price

等待策略三种——固定等待、超时等待、智能等待,新手统一用「等待元素出现」设30秒超时,超时本身就是一条有价值的异常日志。页面总页数不确定时,用「判断元素是否存在」检查下一页按钮class里的disabled,配合While条件循环退出。

变量、循环与数据处理的日志埋点习惯

变量类型决定你日志里能打什么:数字直接拼进文本,字符串用索引截关键段,列表打长度别打全部,字典先判断键存在再取值,JSON解析后打关键字段。循环体里的埋点别每轮都打,按"每10轮打一次进度"节流,既看得见进展又不刷屏。

数据处理的三个环节各有埋点位置:Excel读完后打行数、清洗后打前后差值、数据库写入后打影响行数。建立连接→执行SQL→关闭连接三步,哪一步失败日志就打哪一步的名字,别笼统写"数据库出错"。

埋点时机在开发阶段就要定,跑通之后再补埋点等于重写一遍流程。我的做法是搭主流程骨架时就把三类日志位的空指令拖好,填充业务逻辑时顺手填日志参数,开发完日志也齐了,一举两得。

环节埋点指令打什么
读取完成输出日志读取行数与文件路径
清洗完成输出日志清洗前后条数对比
写入完成输出日志写入行数与目标表名
异常发生错误截图截图加报错文本

鼠标键盘图像与平台实战的日志要点

鼠标键盘类指令容易"点了没反应",日志里加一条"已发送点击:按钮名",配合截图能分清是指令没执行还是执行了没生效。图像识别指令在日志里记下匹配度,识别率忽高忽低的场景就该换定位方案了。平台实战里,拼多多、淘宝、小红书各平台的反爬表现不同,日志里记下每轮的采集间隔,限流排查时这就是关键证据。

进阶的HTTP请求和Python协同,日志打请求状态码和返回摘要;系统联动的飞书消息发送成功与否也要落一条日志,通知通道本身也可能是故障点。

断点调试与变量面板:日志之外的两个定位利器

日志是事后看,断点是现场看。流程开发阶段右键任意指令可以添加断点,点「运行」流程会停在断点上,这时配合单步执行一行行往下走,右侧变量面板里所有变量的实时值一览无余。数据不对这类问题,日志只能告诉你"第15行写进去的值不对",断点能让你亲眼看到变量是在哪一步变成脏数据的。

变量面板还有个新手不知道的用法:循环断点时盯列表变量的长度和首尾元素,采集丢数据多半是相似元素列表长度和预期不符,在断点处一看便知。调试完记得删断点,带着断点的流程挂上定时任务,夜里跑到断点直接停住,后面排队任务全部超窗——这个亏我吃过一次,从此发布前先全局检查断点。

调试三件套的分工:输出日志管常态监控,断点加单步管现场还原,变量面板管数据核对。三个都用上,就没有定位不了的问题。

平台实战:三平台采集流程的日志埋点差异

平台不同,日志侧重点不同。拼多多页面结构和价格符号变化多,数据级日志里我固定打印清洗前后的价格原始值,出问题一眼看出是采集错了还是清洗错了。淘宝有风控,每轮采集间隔和是否触发验证码写进日志,限流排查时时间线一目了然。小红书懒加载列表,日志打印每轮滚动后相似元素列表的长度,长度不再增长就是加载完了,这个数字也是判断翻页逻辑是否正常的依据。

鼠标键盘类操作的日志要点是"动作+目标",比如"驱动模式点击:发布按钮";图像识别的日志打印匹配情况,匹配忽高忽低就该换元素定位方案。日志埋点不是越多越好,按平台风险点埋,噪声少信号强。

日志排查易错速查

序号现象原因与解法
1日志内容被截断超出2万字符上限,改逐行打关键列
2只有"执行异常"没细节Catch块缺「错误截图」和「输出日志」
3本地日志找不到Win+R输入 %localappdata%\ShadowBot\log
4日志刷屏找不到重点循环体按每10轮打一次,级别分开
5定时任务查不到记录应用未发版或机器人离线,先查第三层

延伸阅读与源码参考

三层日志的埋点模板流程我放在代码仓库 home.linyan.cloud,可以直接参考改造,把模块名换成你的业务模块就能用。搭配官方FAQ《如何查看影刀的运行日志》《打印日志是否有字符串长度限制》一起看,参数和路径以文档为准。

#影刀RPA #RPA自动化 #运行日志 #调试技巧 #报错排查

作者:林焱

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询