Ruby 格罗克RSpec试验失败

Ruby 格罗克RSpec试验失败,ruby,rspec,logstash,logstash-grok,Ruby,Rspec,Logstash,Logstash Grok,我试着让格罗克和罗格斯塔什一起工作,但却很难从起跑线上跳下来。我试图将事情简化为一个简洁的测试,如下所示: require "test_utils" describe "basic grokking" do extend LogStash::RSpec config <<-CONFIG filter { grok { match => [ "message", "%{IP:client} %{WORD:method} %{URIP

我试着让格罗克和罗格斯塔什一起工作,但却很难从起跑线上跳下来。我试图将事情简化为一个简洁的测试,如下所示:

require "test_utils"

describe "basic grokking" do
  extend LogStash::RSpec

  config <<-CONFIG
    filter {
      grok {
        match => [ "message", "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" ]
      }
    }
  CONFIG

  sample ({'@message' => '55.3.244.1 GET /index.html 15824 0.043'}) do

    puts subject.inspect # view http://www.codeshare.io/OhDC0

    insist { subject["client"] } == "55.3.244.1"
  end
end
再多的语法调整都没有结果,我也不知道如何检查
主题
,找出其中的内容

最终目的是使用grok提取以下
HttpRequestId

[HttpRequestId = e29041b2-a4a0-4bf3-ba05-2de5e7bcf444] 2015/04/10 08:12:51:632 [DEBUG] ... log message ...
使用类似这样的方法:

grok {
    match => [ "Message", "\[HttpRequestId = %{UUID:HttpRequestId}" ]
}

注意我已经对照我的模式进行了检查,它们有效。这与我的测试方式有关。

经过广泛调查,下面是logstash 1.4.2的grok表达式的最小rspec测试:

# encoding: utf-8

require "test_utils"

describe "simple test" do
  extend LogStash::RSpec

   config <<-CONFIG
    filter {
      grok {
         match        => { "message" => "am%{GREEDYDATA:foo}" }
      }
    }
  CONFIG

  sample 'amessage' do
    insist { subject["foo"] } == "essage"
    insist { subject["message"] } == "amessage"
  end
end
编码:utf-8 需要“测试工具” 描述“简单测试”是什么 扩展LogStash::RSpec 配置“am%{GREEDYDATA:foo}” } } 配置 示例“amessage”do 坚持{subject[“foo”]}==“essage” 坚持{subject[“message”]}==“amessage” 结束 结束 请注意,您必须有
#encoding…
行,否则您将得到
预期的“消息”,但得到的消息为零


此邮件列表消息有帮助:

您用什么语言编写此邮件的包装?看起来像红宝石;可能值得标记。是的,它是ruby。添加了标签。参考:您使用的是什么版本的logstash?我在logstash 1.4.2中遇到了同样的问题。现在我看到到处都是#编码。我肯定我以前从未见过它!期待明天尝试一下,我会的。今天没有机会。当我有什么事情的时候,我会及时更新。抱歉耽搁了,这项工作现在被搁置了,所以我只有在有机会的时候才会看。谢谢你指出编码,这就是诀窍。
# encoding: utf-8

require "test_utils"

describe "simple test" do
  extend LogStash::RSpec

   config <<-CONFIG
    filter {
      grok {
         match        => { "message" => "am%{GREEDYDATA:foo}" }
      }
    }
  CONFIG

  sample 'amessage' do
    insist { subject["foo"] } == "essage"
    insist { subject["message"] } == "amessage"
  end
end