阿里云sls日志正则格式化
阿里云 SLS 支持多种日志采集和解析方式,常见的是基于正则(Regex)或 JSON。
目的
采集日志格式化字段、存储阿里云sls,方便日志检索及字段建立索引。
解决
只要是有日志格式化输出的,就可以用正则格式化日志。
1.原始格式
你当前的格式输出大概是这样的日志内容:
2025-07-16 16:32:14.123 | INFO | app:process_request:42 - abc123 | Request started
其中这些字段含义为:
{time}→ 时间戳{level}→ 日志级别{name}:{function}:{line}→ 文件名、函数名、行号{extra[request_id]}→ 请求 ID{message}→ 日志消息内容
2. 正则格式化日志
正则表达式
(?P<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) \| (?P<level>\w+)\s+\| (?P<name>\w+):(?P<function>\w+):(?P<line>\d+) - (?P<request_id>\w+)\s+\| (?P<message>.*)
坑:阿里云不支持正则含字段名字,须移除。
阿里云 SLS 目前不支持 (?P…) 这种命名捕获组,而是只支持普通捕获组 (…),然后你要在 Web 控制台里手动给每个字段命名。
(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) \| ([A-Z]+)\s+\| ([a-zA-Z0-9_.]+):([a-zA-Z0-9_]+):(\d+) - ([a-f0-9]+) \| (.*)