操作场景
多行-完全正则模式适用于日志文本中一条完整的日志数据跨占多行(例如 Java 程序日志),可按正则表达式提取为多个 key-value 键值的日志解析模式。若不需要提取 key-value,请参阅 多行全文格式 进行配置。 配置多行-完全正则模式时,您需要先输入日志样例,再自定义正则表达式。配置完成后,系统将根据正则表达式中的捕获组提取对应的 key-value。
如下内容将为您详细介绍如何如何采集多行-完全正则模式日志。
注意: 多行-完全正则模式采集需升级至 Loglistener 2.4.5 版本,请前往 安装最新版本 。
假设您的一条日志原始数据为:
[2018-10-01T10:30: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.*
配置的自定义正则表达式为:
\[(\d+-\d+-\w+:\d+:\d+,\d+)\]\s\[(\w+)\]\s(.*)
系统根据
()
捕获组提取对应的 key-value 后,您可以自定义每组的 key 名称如下所示:
time: 2018-10-01T10:30: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)
在“采集配置”页面,根据日志采集路径格式,填写“采集路径”。如下图所示:
日志采集路径格式:
[目录前缀表达式]/**/[文件名表达式]
。
填写日志采集路径后,LogListener 会按照
[目录前缀表达式]
匹配所有符合规则的公共前缀路径,并监听这些目录(包含子层目录)下所有符合
[文件名表达式]
规则的日志文件。其参数详细说明如下:
字段 |
说明 |
---|---|
目录前缀 |
日志文件前缀目录结构,仅支持通配符 * 和 ?* 表示匹配多个任意字符? 表示匹配单个任意字符 |
/**/ |
表示当前目录以及所有子目录 |
文件名 |
日志文件名,仅支持通配符 * 和 ?* 表示匹配多个任意字符? 表示匹配单个任意字符 |
/**/表示当前目录以及所有子目录文件名日志文件名,仅支持通配符 * 和 ?
常用的配置模式如下:
填写示例如下:
序号 |
目录前缀表达式 |
文件名表达式 |
说明 |
---|---|---|---|
1. |
/var/log/nginx |
access.log |
此例中,日志路径配置为/var/log/nginx/**/access.log,LogListener 将会监听/var/log/nginx前缀路径下所有子目录中以access.log命名的日志文件 |
2. |
/var/log/nginx |
*.log |
此例中,日志路径配置为 /var/log/nginx/**/*.log,LogListener 将会监听/var/log/nginx前缀路径下所有子目录中以 .log 结尾的日志文件 |
3. |
/var/log/nginx |
error* |
此例中,日志路径配置为/var/log/nginx/**/error*,LogListener 将会监听/var/log/nginx前缀路径下所有子目录中以error开头命名的日志文件 |
注意:
系统将自动对该部分内容提取一个正则表达式,【自动提取结果】会出现在 key-value 表格中。如下图所示:
说明: 无论选择自动模式还是手动模式,正则提取模式均在完成定义并验证通过后,将提取结果展示在“抽取结果”中。您只需定义每一组 key-value 对的 key 名称,即可将该名称用于日志检索分析。
,即可开启手动验证。
,并填写原始时间戳的时间键以及对应的时间解析格式。 时间解析格式请参见 配置时间格式 。
时间格式解析规则填写的示例如下:
10/Dec/2017:08:00:00.000
,解析格式为:
%d/%b/%Y:%H:%M:%S.%f
。
2017-12-10 08:00:00.000
,解析格式为:
%Y-%m-%d %H:%M:%S.%f
。
12/10/2017, 08:00:00.000
,解析格式为:
%m/%d/%Y, %H:%M:%S.%f
。
注意: 日志时间支持以毫秒为单位,若时间格式填写错误日志时间将以采集时间为准。
过滤器旨在您根据业务需要添加日志采集过滤规则,帮助您筛选出有价值的日志数据。过滤规则为 Perl 正则表达式,所创建的过滤规则为命中规则,即匹配上正则表达式的日志才会被采集上报。
完全正则过来采集时,需要根据所自定义的键值对来配置过滤规则。例如,样例日志使用完全正则模式解析后,您希望 status 字段为400或500的所有日志数据被采集,那么 key 处配置 status,过滤规则处配置 400|500。
注意: 多条过滤规则之间关系是"与"逻辑,若同一 key 名配置多条过滤规则,规则会被覆盖。
设置为
。
有任何问题欢迎大家加入企业微信群咨询:【云原生日志服务CLS】技术社区群(或者联系:v_ltvli加入)