RuleGo RuleGo
🏠首页
  • 快速入门
  • 规则链
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 可视化
  • RuleGo-Server
  • RuleGo-MCP-Server
  • AOP
  • 触发器
  • 高级主题
  • 性能
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 组件市场
  • 概述
  • 快速入门
  • 路由
  • DSL
  • API
  • Options
  • 组件
🔥编辑器 (opens new window)
  • 可视化编辑器 (opens new window)
  • RuleGo-Server (opens new window)
  • ❓问答

    • FAQ
💖支持
👥加入社区
  • Github (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • 更新日志 (opens new window)
  • English
  • 简体中文
🏠首页
  • 快速入门
  • 规则链
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 可视化
  • RuleGo-Server
  • RuleGo-MCP-Server
  • AOP
  • 触发器
  • 高级主题
  • 性能
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 组件市场
  • 概述
  • 快速入门
  • 路由
  • DSL
  • API
  • Options
  • 组件
🔥编辑器 (opens new window)
  • 可视化编辑器 (opens new window)
  • RuleGo-Server (opens new window)
  • ❓问答

    • FAQ
💖支持
👥加入社区
  • Github (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • 更新日志 (opens new window)
  • English
  • 简体中文

广告采用随机轮播方式显示 ❤️成为赞助商
  • 快速入门

  • 规则链

  • 标准组件

    • 标准组件概述
    • 过滤器

    • 动作

      • 记录日志
        • 配置
        • 数据类型支持
        • Relation Type
        • 执行结果
        • 配置示例
          • 基础示例
          • JSON数据处理示例
          • 二进制数据处理示例
          • 多类型智能处理示例
      • 函数处理
      • 延迟
      • 节点组
      • 迭代器
      • 遍历
      • 命令
      • 汇聚
    • 转换器

    • 外部的

    • 流

  • 扩展组件

  • 自定义组件

  • 组件市场

  • 可视化

  • AOP

  • 触发器

  • 高级主题

  • RuleGo-Server

  • 问题

目录

记录日志

log组件:记录日志组件。用于将消息内容格式化并记录到日志中,支持使用JavaScript脚本自定义日志格式。

JavaScript脚本支持ECMAScript 5.1(+) 语法规范和部分ES6规范,如:async/await/Promise/let。允许在脚本中调用Go自定义函数,请参考udf 。

# 配置

字段 类型 说明 默认值
jsScript string 日志格式化脚本 无
  • jsScript:用于格式化日志内容的JavaScript脚本。该字段作为以下函数的函数体:

        function ToString(msg, metadata, msgType, dataType) { 
            ${jsScript} 
         }
    
    1
    2
    3

    函数参数说明:

    • msg:消息内容,根据数据类型进行智能转换
      • 当dataType=JSON时,类型为jsonObject,可使用msg.field方式访问字段
      • 当dataType=BINARY时,类型为Uint8Array,可进行字节级操作
      • 其他dataType时,类型为string
    • metadata:消息元数据,类型为jsonObject
    • msgType:消息类型,类型为string
    • dataType:消息数据类型,类型为string(如:JSON、TEXT、BINARY等)

    函数返回值必须是string类型,返回的字符串将作为日志内容记录。

提示

  • 日志记录器可通过config.Logger配置
  • 默认输出到控制台
  • 支持配置日志级别、输出格式等
  • 支持多种数据类型的智能处理,包括JSON对象访问和二进制数据处理

# 数据类型支持

该组件支持多种消息数据类型:

  • JSON类型:自动解析为JavaScript对象,可直接访问属性
  • BINARY类型:转换为Uint8Array,便于进行字节级操作
  • TEXT类型:保持为字符串格式
  • 其他类型:统一处理为字符串

# Relation Type

  • Success: 执行成功,把消息发送到Success链
  • Failure: 执行失败,把消息发送到Failure链

# 执行结果

该组件不会改变msg.Data和msg.Metadata内容。

# 配置示例

# 基础示例

  {
    "id": "s1",
    "type": "log",
    "name": "记录日志",
    "configuration": {
      "jsScript": "return 'Incoming message:\\n' + JSON.stringify(msg) + '\\nIncoming metadata:\\n' + JSON.stringify(metadata);"
    }
  }
1
2
3
4
5
6
7
8

# JSON数据处理示例

  {
    "id": "s2",
    "type": "log",
    "name": "记录温度日志",
    "configuration": {
      "jsScript": "if (dataType === 'JSON' && msg.temperature !== undefined) { return 'Temperature: ' + msg.temperature + '°C, Device: ' + (metadata.deviceId || 'unknown'); } else { return 'Non-JSON message: ' + JSON.stringify(msg); }"
    }
  }
1
2
3
4
5
6
7
8

# 二进制数据处理示例

  {
    "id": "s3",
    "type": "log",
    "name": "记录二进制日志",
    "configuration": {
      "jsScript": "if (dataType === 'BINARY') { return 'Binary data length: ' + msg.length + ' bytes, first byte: ' + (msg.length > 0 ? msg[0] : 'empty'); } else { return 'Text message: ' + msg; }"
    }
  }
1
2
3
4
5
6
7
8

# 多类型智能处理示例

  {
    "id": "s4",
    "type": "log",
    "name": "智能日志格式化",
    "configuration": {
      "jsScript": "var prefix = '[' + msgType + '][' + dataType + '] '; switch(dataType) { case 'JSON': return prefix + 'JSON data: ' + JSON.stringify(msg); case 'BINARY': return prefix + 'Binary data: ' + msg.length + ' bytes'; default: return prefix + 'Text data: ' + msg; }"
    }
  }
1
2
3
4
5
6
7
8
在 GitHub 上编辑此页 (opens new window)
上次更新: 2025/06/29, 01:38:12
条件分支
函数处理

← 条件分支 函数处理→

Theme by Vdoing | Copyright © 2023-2025 RuleGo Team | Apache 2.0 License

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式