业务日志切面
Business Log Aspect:业务日志切面,是系统内置的切面,自动引入。用于把规则链执行过程产出的业务日志事件异步派发给处理链或记录到运行记录,不影响业务流程。
两类事件:
- 节点日志事件(scope=node):节点通过
logConfig配置 before/after 模板,节点进入时发in事件、执行完成时发out事件,Data为模板渲染结果 - 链结束事件(scope=chain):链级配置
logEvents: ["chainEnd"]后,链执行到达终点分支时发end事件,Data为触发点的消息数据
提示
该切面会自动引入,不需要手动引入。
# 事件结构
事件是一条 type=log 的消息,处理链收到的就是它:
| 字段 | 说明 |
|---|---|
| Data | 节点事件=模板渲染文本;结束事件=触发点的消息数据(结束节点的输入即作者指定的输出) |
| metadata.scope | node(节点事件)/ chain(结束事件) |
| metadata.phase | in / out / end |
| metadata.nodeId、nodeName | 节点事件专属 |
| metadata.relationType | out/end 事件的输出关系:Success、Failure、True、False 等 |
| metadata.error | 失败时的错误内容(结束事件经包装,含链与节点前缀) |
| metadata.chainId、msgId、ts | 事件来源链、触发执行的源消息 ID、纳秒时间戳 |
| metadata.renderError | 模板渲染失败时携带错误说明,此时 Data 回退为原始模板文本 |
# 链结束事件的触发点
跟随引擎结束节点语义,不做去重:
- 链里有结束节点(end 组件):只有结束节点触发,恰好一条
- 没有结束节点:每个无下游的分支终点各触发一条,多分支链会推多条
失败链路同样触发,无论链里有没有结束节点:relationType=Failure 且 metadata.error 携带错误(默认配置下失败分支到达终点即触发,与成功路径到结束节点的那条并存);未处理失败即链以失败终止的场景已被它覆盖。
# 配置方式
节点日志模板:画布节点右键菜单「日志」,配置 before/after 模板(支持 ${metadata.x}、${msg.x}、${data}、${vars.x},输入 ${ 触发补全)。

链结束上报:画布空白处右键「日志上报设置」,选择处理链后勾选「链执行结束时上报」。

也可直接写 DSL:
{
"ruleChain": {
"configuration": {
"logHandler": "日志处理链ID",
"logEvents": ["chainEnd"]
}
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
| 字段 | 类型 | 说明 |
|---|---|---|
| logHandler | string | 处理链 ID,可选;留空则事件仅记录在运行记录 |
| logEvents | []string | 目前仅支持 chainEnd |
注意
${global.x} 的值在模板渲染前一律掩码为 ***,日志事件不外泄宿主全局配置。
# 处理链
处理链是普通规则链,事件含结构化字段,可用过滤器组件按 metadata.scope、metadata.relationType 等筛选。派发独立执行:处理链不存在或派发异常只记日志告警,处理链自身的成败不影响业务链。事件消息带防环标记,处理链里的节点再配日志模板也不会产生二层事件。
在 GitHub 上编辑此页 (opens new window)
上次更新: 2026/10/09, 03:08:58