読者です 読者をやめる 読者になる 読者になる

in_tailの正規表現をテスト

in_tailのformatに正規表現を書く時は、
(修正→設定ファイル読み込み→確認) x nとしてましたが、
もっと簡単にテストしたかったので、formatで使用する正規表現のテスト方法を調べてみました。

ソースを見てみると、どうやらfluent/parserの"RegexpParser"クラスで正規表現の解析を行なっているみたいなので、このクラスでテストをしてみました。
これで少し楽に!

require 'time'
require 'fluent/log'
require 'fluent/config'
require 'fluent/engine'
require 'fluent/parser'

$log ||= Fluent::Log.new

format = /^\[(?<time>[^\]]*)\] (?<log>.*)$/
time_format = '%Y/%m/%d %H:%M:%S'

parser = Fluent::TextParser::RegexpParser.new(format, 'time_format' => time_format)

log = '[2012/06/07 12:00:00] aaa bbb ccc'
puts parser.call(log)
# => 1339038000
# {"log"=>"aaa bbb ccc"}