Home > Software engineering >  Ruby regex for fluentbit
Ruby regex for fluentbit

Time:07-23

I need to create a regex expression for fluent bit This is what I tried

^(?<log_time>[0-9-]  [:0-9,] )\s \s (?<severity>\w )\s -\s (?<message>.*)

Input is 2022-07-20 15:21:31,994 - INFO - Moving to Dashboard

Desired output:

    log_time:  2022-07-20 15:21:31,994
    severity:  INFO
    message:   Moving to Dashboard

How can I achieve this? (at some point I am getting the log_time before milliseconds but that's not enough) Help would be appreciated. Thank you

CodePudding user response:

You can use

^(?<log_time>[0-9-]  [:0-9,] )\s -\s (?<severity>\w )\s -\s (?<message>.*)

See the regex demo. Details:

  • ^ - start of string
  • (?<log_time>[0-9-] [:0-9,] ) - Log time: one or more digits or -, then a space, and then one or more colons, digit or commas
  • \s -\s - a hyphen wrapped with one or more whitespaces
  • (?<severity>\w ) - Severity: one or more word chars
  • \s -\s - a hyphen wrapped with one or more whitespaces
  • (?<message>.*) - Message: any zero or more chars other than line break chars as many as possible (no need of $)
  • Related