我想写一个Codec
插件来启用LogStash来解码二进制数据格式。
The official documentation for writing a Codec
表明我需要定义一个接受单个参数的decode
方法:一个名为data
的变量。
我是LogStash和Ruby的新手。我主要使用静态类型语言,我不确定如何更多地了解data
变量。我假设它类似于InputStream
类型的对象,允许我在数据可用时读取数据,但我不确定。
问题:
data
对象是什么类型的?它有什么方法?data
的字符串表示形式转储到STDOUT的情况下,我找不到解决方法。谢谢!
答案 0 :(得分:0)
编写input
插件的文档提示。来自run() method
section:
data = $stdin.sysread(16384)
@codec.decode(data) do |event|
decorate(event)
event.set("host", @host) if !event.include?("host")
queue << event
end
data
变量是Ruby String
,它被用作任意字节的缓冲区。我已经通过创建一个框架插件并在运行时检查该值来验证这一点。
这似乎值得警惕:提供给codec
decode
方法的字节不能保证是完整的事件。