Power Automate 中的自定义日志记录
Source: Dev.to

简易、实用的 DIY 方法,使用 SharePoint Online 列表
📅 最初发布于 2025年 1月 1日
检查事件、错误和结果
优雅地处理错误 在你的流程逻辑中很重要。有大量指南可供参考:
- Error Handling – THE FLYING POLYMATH
- Try Catch – D365 Demystified
- Error Handling Standards – Matthew Devaney
我们如何在不翻阅大量流程运行历史的情况下调查异常?
如果 Azure Application Insights 的集成不在范围内,且 Automation Center 中的信息不够细致,请考虑 自定义事件日志。
场景 / 用例
- 🏭 在预期会有一定失败率的批量内容操作中
- 📆 构建涉及时间顺序活动和事件的解决方案
- 🧺 将流错误集中收集在一个位置,而不是依赖“推送”通知
- 🤖 为来自更高环境或服务账户上下文的运行提供可见性
- 🖥 在自动化上下文旁显示流结果数据(用于 SPO 场景)
日志列表示例
审批事件历史
计划自动化
批量内容同步
创建日志或事件列表
列
没有完美的配方,但典型的列表包括:
- 运行结果(成功、错误、警告等)
- 结果详情
- 关联项标题
- 关联项 ID
- 流运行 ID
添加任何您需要的 场景特定列。
提示: 保持简洁——尽可能使用单行文本列。避免使用选项字段、查找或其他复杂数据类型。
对于 ALM 场景,您可能还需要:
- 流名称
- 解决方案名称
- 环境
配置技巧
-
禁用列表的搜索(高级设置)或将权限限制为相关受众。

-
为需要用于排序或筛选的列建立索引。
-
若要存储 JSON 输出,请添加一个 多行纯文本列。

-
创建 视图 并添加 自定义列格式化(参见 Microsoft Docs)以提升可读性。
-
条目开始填充后,重新审视列表——你可能会想到需要捕获的其他字段。
克隆现有列表
假设自定义日志记录证明是有用的,您可能希望通过克隆现有列表并调整列/视图以适应新场景来创建更多列表。
(内容继续…)
添加日志操作
一旦列表准备就绪,就可以开始添加一些流程逻辑。新的日志条目将使用 Create Item 操作来添加。
添加日志步骤有两种通用方法——两者都能实现相同的结果,但考虑因素不同。
1. 添加到现有流程
可以在 现有 流程逻辑中随意插入日志操作,使用复制 / 粘贴。

| 优点 | 缺点 |
|---|---|
| 简单、快速的方式 | 如果列表架构更改,可能需要更新(并查找)所有之前添加的操作 |
| 无额外许可费用 | 除非手动操作,否则以后无法添加额外操作(例如发送通知) |
| 可以存储复杂数据类型、JSON | |
| 使用现有的 SharePoint Online 连接/引用(如果已有) |
2. 创建独立的日志流程
另一种做法是创建一个单独的流程(HTTP 触发器或 child solution flow),用于存放日志步骤。

创建后,根据需要从现有流程中调用它:

| 优点 | 缺点 |
|---|---|
| 以后如果需要扩展会更容易 | 需要额外的设置时间和复杂度 |
| 能处理复杂数据类型(仅限 HTTP 触发器) | 需要高级许可(仅限 HTTP 触发器) |
| 一个日志流程可以被多个解决方案/流程共享 | 需要收集并发送父工作流上下文 |
| 可选择异步运行——不会阻塞父流程 |
💡 提示: 别忘了为 HTTP‑触发器流程添加 Response 操作,或为子解决方案流程添加 Respond to Power Apps or Flow 操作。
其他说明
-
Retry policies – 在调用独立日志流或调用 Create Item 日志操作时,考虑禁用重试策略。如果日志出现问题,不希望阻塞父流程的运行。
-
Hierarchical logging – 为记录层级流程结果,在父流程开始、结束以及每一次子流程迭代时创建日志条目。保存一个共享标识符(例如,父流程运行 ID),以便后续对条目进行分组。

-
Aggregated metrics – 计算整体流程运行时长、错误和成功总数等,可以为特定运行的最终日志条目增添价值。只有在额外洞察值得投入时才加入此逻辑。
-
Scope of logging – 您可以使用此处描述的技术仅存储 errors / exceptions only,也可以根据情况包括成功结果和其他事件类型。
Tools & Options Mentioned
-
ShareGate – 迁移工具
-
Microsoft Lists – 原生 SharePoint 列表解决方案
使用现有列表 选项在 SharePoint UI(位于 Site contents)




