2015-10-08 2 views
0

У меня есть ниже Fluentd код плагина:error_class = NoMethodError ошибка = "неопределенный метод` bytesize»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 

И мне нужно, например в класса„Образец“в четкости„Формат“ . проблема заключается в том, что, когда я пытаюсь сделать HTTP POST, против Fluentd появляется следующее сообщение об ошибке:

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

Эта ошибка появляется только тогда, когда класс «образец» является инстанс. Я новичок в рубине, и я не знаю, где проблема. Должен ли я создать класс «Образец» в другом файле?

+0

Не могли бы вы показать полную трассировку стека вашей ошибки? –

ответ

1

Я думаю, что вы получаете эту ошибку, потому что код, вызывающий format, ожидает строковый результат, но вместо этого он получает экземпляр класса Sample. Попробуйте вместо этого вернуть некоторую строку.

Вы также можете использовать этот пример здесь: http://docs.fluentd.org/articles/plugin-development#text-formatter-plugins.

 Смежные вопросы

  • Нет связанных вопросов^_^