簡體   English   中英

為流利的創建正則表達式模式

[英]Create regex pattern for fluentd

我正在使用 Fluentd 配置和正則表達式解析器來解析日志。

這是我在 fluentd 中的原始日志:

2022-09-22 18:15:09,633 [springHikariCP housekeeper    ] DEBUG HikariPool                     - springHikariCP - Fill pool skipped, pool is at sufficient level.
2022-09-22 18:15:14,968 [ringHikariCP connection closer] DEBUG PoolBase                       - springHikariCP - Closing connection com.mysql.cj.jdbc.ConnectionImpl@7f535ea4: (connection has passed maxLifetime)

我想使用正則表達式為上述日志創建 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:09,633",
    "Logger Name": "[ringHikariCP connection closer]",
    "Log level": "DEBUG",
    "message": "PoolBase                       - springHikariCP - Closing connectioncom.mysql.cj.jdbc.ConnectionImpl@7f535ea4: (connection has passed maxLifetime)"
}

有 Ruby 經驗的人可以幫我為上面的日志創建 Ruby 正則表達式嗎

正則表達式應該簡單明了,例如

(?'logtime'\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\s(?'logname'\[[^\]]*\])\s(?'loglevel'\w+)\s(?'message'.*)

在線測試

然后,使用替換( gsub ,請參見下面的示例)或將新字符串組合在一起( match )重新組裝零件:

re = /(?'logtime'\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\s(?'logname'\[[^\]]*\])\s(?'loglevel'\w+)\s(?'message'.*?$)/m
str = '2022-09-22 18:15:09,633 [springHikariCP housekeeper    ] DEBUG HikariPool                     - springHikariCP - Fill pool skipped, pool is at sufficient level.
2022-09-22 18:15:14,968 [ringHikariCP connection closer] DEBUG PoolBase                       - springHikariCP - Closing connection com.mysql.cj.jdbc.ConnectionImpl@7f535ea4: (connection has passed maxLifetime)'

str.gsub(re) do |match|
  puts "{
    \"logtime\": \"#{$~[:logtime]}\",
    \"Logger Name\": \"#{$~[:logname]}\",
    \"Log level\": \"#{$~[:loglevel]}\",
    \"message\": \"#{$~[:message]}\"
}"
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM