error_class=NoMethodError error="未定义方法`bytesize' Fluentd

error_class=NoMethodError error="undefined method `bytesize' Fluentd

我有以下 Fluentd 插件代码:

require 'avro'

module Fluent
  module TextFormatter

    class Sample
    end

    class AvroFormatter < Formatter
      Fluent::Plugin.register_formatter('avro', self)

      config_param :schema_file, :string, :default => nil
      config_param :schema_json, :string, :default => nil

      def configure(conf)
        super
        if not (@schema_json.nil? ^ @schema_file.nil?) then
          raise Fluent::ConfigError, 'schema_json or schema_file (but not both) is required'
        end
        if @schema_json.nil? then
          @schema_json = File.read(@schema_file)
        end
        @schema = Avro::Schema.parse(@schema_json)
      end

      def format(tag, time, record)
        handler = Sample.new()
      end
    end
  end
end

我需要在 def "Format" 中实例化 class "Sample"。问题是,当我尝试对 Fluentd 执行 http POST 时,出现以下错误:

failed: error_class=NoMethodError error="undefined method `bytesize'

此错误仅在实例化 class "Sample" 时出现。我是 ruby 的新手,我不知道问题出在哪里。我应该在另一个文件中创建 class "Sample" 吗?

我认为您收到此错误是因为调用 format 的代码需要字符串结果,但它却获得了 Sample class 的实例。尝试 return 一些字符串。

您也可以在此处使用此示例:http://docs.fluentd.org/articles/plugin-development#text-formatter-plugins