Link Search Menu Expand Document Documentation Menu

truncate

truncate 处理器根据其配置,从值的开头、结尾或两侧截断键的值字符串。如果键的值是一个列表,则列表中的每个字符串成员都会被截断。列表中非字符串成员不会被截断。当提供了 truncate_when 选项时,只有当指定条件对于正在处理的事件为 true 时,才会执行截断操作。

配置

您可以使用以下选项配置 truncate 处理器。

选项 必需 类型 描述
entries 字符串列表 要添加到事件中的条目列表。
source_keys 字符串列表 将由处理器修改的源键列表。默认值为空列表,表示所有值都将被截断。
truncate_when 条件表达式 一个条件,当满足时,决定何时执行截断操作。
start_at 整数 字符串值中截断的起始位置。默认为 0,指定从每个键的值的开头开始截断。
length 整数 截断后字符串的长度。如果未指定,处理器将根据字符串的结束位置测量长度。

为了使 truncate 处理器运行,配置中必须存在 start_atlength 选项。您可以在配置中同时定义这两个值,以进一步自定义字符串中截断发生的位置。

用法

以下示例展示了如何在 pipeline.yaml 文件中配置 truncate 处理器

示例:最小配置

以下示例展示了 truncate 处理器的最小配置

pipeline:
  source:
    file:
      path: "/full/path/to/logs_json.log"
      record_type: "event"
      format: "json"
  processor:
    - truncate:
        entries:
          - source_keys: ["message1", "message2"]
            length: 5
          - source_keys: ["info"]
            length: 6
            start_at: 4
          - source_keys: ["log"]
            start_at: 5
  sink:
    - stdout:

例如,以下事件包含多个带有字符串值的键

{"message1": "hello,world", "message2": "test message", "info", "new information", "log": "test log message"}

truncate 处理器产生以下输出,其中

  • message1message 2 键的 start_at 设置为 0,表示截断将从字符串的开头开始,字符串本身截断到长度为 5
  • info 键的 start_at 设置为 4,表示截断将从字符串的字母 i 开始,字符串截断到长度为 6
  • log 键的 start_at 设置为 5,未指定长度,表示截断将从字符串的字母 l 开始。
{"message1":"hello", "message2":"test ", "info":"inform", "log": "log message"}

示例:使用 truncate_when

以下配置示例展示了配置了 truncate_when 选项的 truncate 处理器

pipeline:
  source:
    file:
      path: "/full/path/to/logs_json.log"
      record_type: "event"
      format: "json"
  processor:
    - truncate:
        entries:
          - source_keys: ["message"]
            length: 5
            start_at: 8
            truncate_when: '/id == 1'
  sink:
    - stdout:

以下示例包含两个事件

{"message": "hello, world", "id": 1}
{"message": "hello, world,not-truncated", "id": 2}

truncate 处理器在这些事件上运行时,只有第一个事件被截断,因为 id 键的值为 1

{"message": "world", "id": 1}
{"message": "hello, world,not-truncated", "id": 2}
剩余 350 字符

有问题?

想贡献?