影刀RPA避坑指南:日志系统搭建与无人值守监控的完整方案

流程在白天盯着跑的时候,出什么问题你都能立刻看到。但一旦设成半夜的定时任务,人不在电脑前,流程崩了、数据错了、卡在某一步不动了,你第二天早上才能发现。我刚开始做无人值守采集的时候,就靠影刀默认的运行日志排查问题,结果发现默认日志太简略了——只知道“流程结束”,不知道中间经历过什么、哪条数据出了问题、报错的时候页面长什么样。

后来我花了点时间,用影刀RPA自带的“输出日志”“截图”和“发送HTTP请求”指令,搭了一套完整的三层日志系统。现在任何一个流程跑完,我都能看到关键节点的执行轨迹,出错了有详细的现场截图和告警通知。这篇文章就把这套日志系统的搭建方法完整分享出来,包括三层日志怎么设计、关键节点怎么埋点、错误截图怎么自动管理、以及日志文件怎么定期清理。

为什么默认的运行日志不够用,必须自己加三层日志

影刀RPA在流程执行时会自动产生运行日志,你可以在客户端的“运行日志”面板里看到。但这份日志偏重指令级别的执行状态,比如“打开网页成功”“点击元素失败”,而且只保留最近一段时间的记录,久了会自动清除。

picture.image

对于需要长期无人值守的电商采集流程来说,三个核心信息是默认日志给不了的:

picture.image

  1. 业务流程层面的进度——比如“正在处理第3个关键词,已采集120条商品”
  2. 异常发生时的完整现场——不只是错误提示,还包括当时页面截图、变量值
  3. 跨天的运行报告——今天跑了多少次、成功几次、失败几次、采集了多少数据

picture.image 所以我设计了“三层日志”结构:业务进度层、异常取证层、汇总报告层。 每一层用不同的影刀指令实现,各司其职。

picture.image

第一层:业务进度日志——用“输出日志”指令埋关键节点

这一层的目的是让你在流程跑完之后,能像看流水账一样,清楚知道什么时间做了什么事,处理了多少数据。即使流程完全没报错,这些日志也能帮你评估采集效率和发现数据异常。

埋点位置的选择: 不需要每一步都打日志,那会刷屏。只在以下节点打:

  • 流程开始(记录启动时间和传入参数)

picture.image

  • 每个关键词开始搜索
  • 每翻一页(记录页码和当前页商品数量)
  • 每完成一个关键词的全部采集(记录该关键词总条数)
  • 遇到可恢复的异常并跳过(记录跳过原因)

picture.image

  • 流程正常结束(记录总条数、总耗时)

picture.image 日志内容的固定格式: 在“输出日志”指令里,用变量拼接出这样一条信息:

picture.image

picture.image

[2026-07-01 02:35:12] [关键词:无线耳机] [第5页] 提取完成,本页20条,累计100

时间用“格式化时间”指令生成,关键词和页码用循环变量,条数用计数器变量。

日志级别全部用“信息”,这样在日志面板里筛选“信息”级别就能看到完整的业务轨迹,不会被调试日志干扰。影刀的“输出日志”指令在指令面板的“流程控制”分类下,拖出来后填内容、选级别就行。

第二层:异常取证日志——错误截图加变量快照

当流程真的报错时,光知道“获取元素失败”是不够的。你得知道当时页面上到底显示的是什么,是被弹窗挡住了,还是页面压根没加载出来。这一层专门用于异常发生时的现场取证。

具体操作:在Catch块里按顺序执行以下指令:

  1. 截图保存。 拖入“截图”指令,类型选“截取可视区域”,保存路径带时间戳,如 D:\日志\错误截图\{{当前关键词}}_{{页码}}_{{时间戳}}.png。为什么选可视区域而不是整个网页?因为弹窗、错误提示都在当前视口内,整个网页长图反而可能把弹窗重复印在每一截上。
  2. 输出错误日志。 用“输出日志”指令,级别选“错误”,内容包含:错误信息 {{LastError}}、当前关键词、当前页码、当前URL。
  3. 记录变量快照。 用“输出日志”把关键变量的当前值也打出来,比如 当前变量值:关键词={{当前关键词}},页码={{页码}},已采集={{计数}}。影刀的系统变量 {{LastError}} 可以拿到最近一次错误的详细描述,一定要用上。
  4. 发送告警通知(可选)。 如果是致命错误,调用企业微信子流程发送通知,把错误摘要和截图路径发到群里。

截图文件的命名和管理: 文件名里带关键词和页码,是为了让你不用打开图片就能从文件名判断大概情况。截图文件夹按日期分,每天一个子文件夹。一个月下来截图会很多,需要一个自动清理机制,后面会讲。

第三层:汇总报告日志——每次任务结束生成一份运行报告

前两层日志是用来排查问题的,这一层是给你和管理者看的总结。每次定时任务跑完,生成一份简短报告,告诉你这次运行的整体情况。你可以选择把报告写入一个专门的Excel文件,或者直接通过飞书/企业微信发送。

报告内容的固定字段:

picture.image

  • 任务名称
  • 执行时间(开始→结束,总耗时)
  • 处理关键词数量
  • 采集商品总数
  • 新增商品数(如果有去重逻辑)
  • 错误次数(警告级和错误级分别统计)
  • 错误详情摘要(前三条错误的简要描述)

在影刀里实现: 流程开始时,创建一个数据表格变量 table_运行报告,包含以上列。在运行过程中,用变量累计计数。流程结束前,用“添加数据行”把汇总数据写入 table_运行报告,然后调用“写入Excel文件”追加到月度报告文件中。

如果你想实时收到报告,可以在流程最后调用企业微信通知子流程,发送Markdown格式的汇总消息。这样你早上醒来打开手机就能看到昨晚的采集情况,不用开电脑。

日志文件自动清理:别让截图和日志撑爆硬盘

截图文件夹如果不清理,一个月能积累几个G。日志文件如果一直往同一个文件追加,也会变得很大,打开都慢。需要一个自动清理策略。

推荐的做法: 在流程的Finally块或者一个专门的“日志清理”子流程中,用Python脚本删除超过保留天数的文件。

import os
import time

# 输入:folder_path(要清理的文件夹路径),keep_days(保留天数)
# 删除指定文件夹中修改时间超过keep_days的文件

now = time.time()
keep_seconds = keep_days * 86400

for filename in os.listdir(folder_path):
    file_path = os.path.join(folder_path, filename)
    if os.path.isfile(file_path):
        file_age = now - os.path.getmtime(file_path)
        if file_age > keep_seconds:
            os.remove(file_path)
            print(f"已删除过期文件: {filename}")

把这段代码放在影刀的“执行Python脚本”指令里,每月运行一次,保留最近30天的截图和日志。folder_path 用变量传入你存放日志和截图的目录。

如果不想用Python,也可以用影刀的“执行命令行”指令配合Windows的批处理命令:

forfiles /p "D:\日志\错误截图" /s /m *.* /d -30 /c "cmd /c del @file"

这条命令会删除指定目录下超过30天未修改的所有文件。拖入“执行命令行”指令,粘贴命令,不依赖Python环境。

运行日志与影刀自带的“运行报告”功能结合

影刀客户端本身有一个“运行报告”功能,在左侧菜单栏可以找到。它会记录每次流程执行的开始时间、结束时间、执行结果(成功/失败)、运行时长。这是系统级别的统计,不需要你额外配置。

但注意: 运行报告里的“成功”只代表流程没有抛出未捕获的异常正常结束了,不代表数据一定正确。如果你的异常被Catch吞掉了,流程正常结束,运行报告里显示的也是“成功”。所以不能用运行报告替代业务层面的汇总日志,两者配合使用:运行报告看系统级健康状况,你的汇总日志看业务数据正确性。


日志系统搭建常见问题速查

问题可能原因解决方案
日志文件太大打不开长期追加写入未清理按月分割日志文件,定期归档或删除
截图一片空白截图时机过早或浏览器未激活截图前加0.5秒延时,并确保浏览器在前台
错误日志里LastError为空错误被提前捕获,系统变量未赋值确保在Catch块的第一时间读取LastError
企业微信通知刷屏异常在循环内频繁触发加上频率限制(10分钟内同错误只报一次)
汇总报告数据与Excel实际行数对不上计数器变量未在异常分支中正确更新检查所有异常分支是否都维护了计数器

推荐资源: 影刀官方社区有用户分享的“日志管理模板”,包含三层日志的完整结构和自动清理子流程,搜索“日志模板”可以直接下载使用。另外,如果你的团队需要更集中的日志监控,可以考虑把日志通过HTTP请求发送到企业微信或飞书机器人,搭建一个简单的日志中心,方法可以参考我之前写的企业微信通知那篇文章。


#影刀RPA #RPA自动化 #日志系统 #异常处理 #定时任务

作者:林焱

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

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