truncate
truncate 处理器根据其配置,从值的开头、结尾或两侧截断键的值字符串。如果键的值是一个列表,则列表中的每个字符串成员都会被截断。列表中非字符串成员不会被截断。当提供了 truncate_when 选项时,只有当指定条件对于正在处理的事件为 true 时,才会执行截断操作。
配置
您可以使用以下选项配置 truncate 处理器。
| 选项 | 必需 | 类型 | 描述 |
|---|---|---|---|
entries | 是 | 字符串列表 | 要添加到事件中的条目列表。 |
source_keys | 否 | 字符串列表 | 将由处理器修改的源键列表。默认值为空列表,表示所有值都将被截断。 |
truncate_when | 否 | 条件表达式 | 一个条件,当满足时,决定何时执行截断操作。 |
start_at | 否 | 整数 | 字符串值中截断的起始位置。默认为 0,指定从每个键的值的开头开始截断。 |
length | 否 | 整数 | 截断后字符串的长度。如果未指定,处理器将根据字符串的结束位置测量长度。 |
为了使 truncate 处理器运行,配置中必须存在 start_at 或 length 选项。您可以在配置中同时定义这两个值,以进一步自定义字符串中截断发生的位置。
用法
以下示例展示了如何在 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 处理器产生以下输出,其中
message1和message 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}