概述
多行正则模式用于处理结构化的日志,针对包含多行内容的日志,您需要指定一个行首正则表达式用于匹配日志的开头,并指定一个正则表达式用于提取多个值,采集器按照该正则表达式将一条完整日志提取为多个 key-value 键值。
示例
如您需要采集的原始数据为:
- 原始日志:
[2023-04-02T14:29:01,000] [INFO] java.lang.Exception: exception happened at TestPrintStackTrace.f(TestPrintStackTrace.java:3) at TestPrintStackTrace.g(TestPrintStackTrace.java:7) at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
- 配置行首正则表达式为:
\[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*
- 配置自定义正则表达式为:
\[([^]]+)]\s\[(\w+)\S+(.*)
- 系统将根据行首正则表达式匹配每条日志的开头,并根据自定义正则表达式提取键值对,您需要为每个提取出来的值指定key名称。同时会将原始日志内容存放在
__message__
字段中,如下所示:time: 2023-04-02T14:29:01,000 level: INFO msg: java.lang.Exception: exception happened at TestPrintStackTrace.f(TestPrintStackTrace.java:3) at TestPrintStackTrace.g(TestPrintStackTrace.java:7) at TestPrintStackTrace.main(TestPrintStackTrace.java:16) __message__: [2023-04-02T14:29:01,000] [INFO] java.lang.Exception: exception happened at TestPrintStackTrace.f(TestPrintStackTrace.java:3) at TestPrintStackTrace.g(TestPrintStackTrace.java:7) at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
配置说明
在日志接入流程中-创建采集配置步骤中,按如下参数说明配置切割模式:
采集配置参数说明:
参数 | 描述 |
---|---|
切割模式 | 针对原始日志执行分词的模式,选择“多行正则”。 |
日志样例 | 输入您需要采集的日志样例。 |
首行正则表达式 | 首行正则表达式用于匹配每一条日志的行首,以确认每条日志的开头位置。输入完成后,点击【验证】,系统将根据您输入的日志样例判断表达式是否通过以及成功解析的日志条数。 |
正则表达式 | 输入正则表达式,点击【验证】按钮,系统将根据您输入的正则表达式对日志样例进行字段切割。 |
日志提取内容 | 根据正则表达式切割的结果会展示在日志提取内容中,您需要为每个字段定义唯一的 key。 |