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}