lib/fluent/plugin/out_hipchat.rb in fluent-plugin-hipchat-0.2.0 vs lib/fluent/plugin/out_hipchat.rb in fluent-plugin-hipchat-0.3.0

- old
+ new

@@ -1,12 +1,17 @@ +require 'hipchat-api' +require 'fluent/plugin/output' -module Fluent - class HipchatOutput < BufferedOutput +module Fluent::Plugin + class HipchatOutput < Output COLORS = %w(yellow red green purple gray random) FORMAT = %w(html text) + DEFAULT_BUFFER_TYPE = "memory" Fluent::Plugin.register_output('hipchat', self) + helpers :compat_parameters + config_param :api_token, :string, :secret => true config_param :default_room, :string, :default => nil config_param :default_color, :string, :default => 'yellow' config_param :default_from, :string, :default => 'fluentd' config_param :default_notify, :bool, :default => false @@ -17,18 +22,23 @@ config_param :http_proxy_port, :integer, :default => nil config_param :http_proxy_user, :string, :default => nil config_param :http_proxy_pass, :string, :default => nil config_param :flush_interval, :time, :default => 1 + config_section :buffer do + config_set_default :@type, DEFAULT_BUFFER_TYPE + config_set_default :chunk_keys, ['tag'] + end + attr_reader :hipchat def initialize super - require 'hipchat-api' end def configure(conf) + compat_parameters_convert(conf, :buffer) super @hipchat = HipChat::API.new(conf['api_token']) @default_room = conf['default_room'] @default_notify = conf['default_notify'] || 0 @@ -38,22 +48,31 @@ conf['http_proxy_host'], conf['http_proxy_port'], conf['http_proxy_user'], conf['http_proxy_pass']) end + raise Fluent::ConfigError, "'tag' in chunk_keys is required." if not @chunk_key_tag end def format(tag, time, record) - [tag, time, record].to_msgpack + [time, record].to_msgpack end + def formatted_to_msgpack_binary + true + end + + def multi_workers_ready? + true + end + def write(chunk) - chunk.msgpack_each do |(tag,time,record)| + chunk.msgpack_each do |(time,record)| begin send_message(record) if record[@key_name] set_topic(record) if record['topic'] rescue => e - $log.error("HipChat Error:", :error_class => e.class, :error => e.message) + log.error("HipChat Error:", :error_class => e.class, :error => e.message) end end end def send_message(record)