You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求Ruby正则表达式:将Fluentd日志解析为指定JSON格式

解决方案

Ruby正则表达式

针对你的日志格式,对应的Ruby正则表达式如下:

/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) +(\[.+?\]) +(\w+) +(.+?)\.?$/

正则捕获组说明

  • 第1组:匹配日志时间,对应logtime字段,精准匹配YYYY-MM-DD HH:MM:SS,SSS格式
  • 第2组:匹配带方括号的Logger名称,对应Logger Name字段,支持名称内包含空格和任意字符
  • 第3组:匹配日志级别(如DEBUG),对应Log level字段,适配大写字母组成的级别标识
  • 第4组:匹配日志消息内容,对应message字段,末尾的\.?$用于可选匹配并去除日志末尾的句号,和你期望的输出格式完全对齐

Fluentd配置示例

将该正则应用到Fluentd的regexp parser中,配置如下:

<source>
  @type tail
  path /path/to/your/log/file.log
  tag your.log.tag
  <parse>
    @type regexp
    expression /^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) +(\[.+?\]) +(\w+) +(.+?)\.?$/
    keys logtime,Logger Name,Log level,message
  </parse>
</source>

验证效果

用你提供的两条日志测试,解析后会生成你期望的JSON结构:
第一条日志解析结果:

{
    "logtime": "2022-09-22 18:15:09,633",
    "Logger Name": "[springHikariCP housekeeper    ]",
    "Log level": "DEBUG",
    "message": "HikariPool                     - springHikariCP - Fill pool skipped, pool is at sufficient level"
}

第二条日志解析结果:

{
    "logtime": "2022-09-22 18:15:14,968",
    "Logger Name": "[ringHikariCP connection closer]",
    "Log level": "DEBUG",
    "message": "PoolBase                       - springHikariCP - Closing connection com.mysql.cj.jdbc.ConnectionImpl@7f535ea4: (connection has passed maxLifetime)"
}

内容的提问来源于stack exchange,提问作者John777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:00:17