如何编写正确的Fluent Bit Ruby正则表达式解析指定日志格式
解决Fluent Bit正则无法完整捕获含毫秒的log_time字段问题
正确的正则表达式
^(?<log_time>[0-9-]+\s[0-9:,]+)\s+-\s+(?<severity>\w+)\s+-\s+(?<message>.*)
问题分析与修正点
- 字符集写法错误:原正则中
[:0-9,]+的写法不符合正则规范,应改为[0-9:,]+,这样才能正确匹配时间部分的数字、冒号和毫秒前的逗号。 - 多余的空格匹配:原正则中
\s+\s+属于无效匹配,日志里日期时间与 severity 之间的分隔符是-(空格+减号+空格),因此需要替换为\s+-\s+,确保正则能准确匹配日志结构,完整捕获log_time字段。
验证结果
使用修正后的正则解析目标日志2022-07-20 15:21:31,994 - INFO - Moving to Dashboard,将得到符合预期的结构化输出:
log_time: 2022-07-20 15:21:31,994 severity: INFO message: Moving to Dashboard
内容的提问来源于stack exchange,提问作者Ramzan Mahmood
相关产品推荐
相关产品推荐

