多行切分
简介
processor_split_log_regex processor插件实现多行日志(例如Java程序日志)的采集。
备注:推荐在文件类等输入插件(如 input_file)的 Multiline 配置中完成多行聚合;该能力在读取路径上由主进程内置逻辑(含内部处理器)完成。
若仍需使用本扩展插件在 Processor 阶段做多行切分,与其他 Processor 串联时,须将其置于 processors 列表的第一项。
版本
版本说明
- 推荐版本:iLogtail v1.7.1 及以上
配置参数
| 参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
| Type | string | 是 | 插件类型 |
| SplitKey | string | 是 | 切分依据的字段。 |
| SplitRegex | string | 是 | 行首正则,只有匹配上的才认为是多行日志块的行首。 默认为.*,表示每行都进行切分。 |
| PreserveOthers | Boolen | 否 | 是否保留其他非SplitKey字段。 |
| NoKeyError | bool | 否 | 无匹配的原始字段时是否报错。如果未添加该参数,则默认使用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: true
inputs:
- Type: input_file
FilePaths:
- /home/test-log/*.log
processors:
- Type: processor_split_log_regex
SplitRegex: \[\d+-\d+-\d+\s\d+:\d+:\d+]\s.*
SplitKey: content
PreserveOthers: true
flushers:
- 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"
}