多行切分
简介
processor_split_log_regex processor
插件实现多行日志(例如Java程序日志)的采集。
备注:建议使用正则加速或分隔符加速插件中的多行切分功能替代。
单独与非加速插件配合时,该插件必须设置为processor
的第一个插件。
版本
配置参数
参数 | 类型 | 是否必选 | 说明 |
---|---|---|---|
Type | String | 是 | 插件类型 |
SplitKey | String | 是 | 切分依据的字段。 |
SplitRegex | String | 是 | 行首正则,只有匹配上的才认为是多行日志块的行首。 默认为.*,表示每行都进行切分。 |
PreserveOthers | Boolen | 否 | 是否保留其他非SplitKey字段。 |
NoKeyError | Boolean | 否 | 无匹配的原始字段时是否报错。如果未添加该参数,则默认使用false,表示不报错。 |
样例
采集/home/test-log/
路径下的multiline.log
文件,并按行首正则进行多行切分。
- 输入
echo -e '[2022-03-03 18:00:00] xxx1\nyyyyy\nzzzzzz\n[2022-03-03 18:00:01] xxx2\nyyyyy\nzzzzzz' >> /home/test-log/multiline.log
- 采集配置
enable: trueinputs: - Type: input_file FilePaths: - /home/test-log/*.logprocessors: - Type: processor_split_log_regex SplitRegex: \[\d+-\d+-\d+\s\d+:\d+:\d+]\s.* SplitKey: content PreserveOthers: trueflushers: - Type: flusher_stdout OnlyStdout: true
- 输出
{ "__tag__:__path__": "/home/test-log/multiline.log", "content": "[2022-03-03 18:00:00] xxx1\nyyyyy\nzzzzzz\n", "__time__": "1657367638"}{ "__tag__:__path__": "/home/test-log/multiline.log", "content": "[2022-03-03 18:00:01] xxx2\nyyyyy\nzzzzzz", "__time__": "1657367638"}