class Semlog::RabbitNotifier
Attributes
connection[RW]
default_options[RW]
exhange_name[RW]
host[RW]
port[RW]
pw[RW]
user[RW]
vhost[RW]
Public Class Methods
new(host:, port:, vhost:, exchange_name:, user:, pw: @connection = nil)
click to toggle source
# File lib/semlog/rabbit_notifier.rb, line 14 def initialize host:, port:, vhost:, exchange_name:, user:, pw: @connection = nil @host = host @port = port @vhost = vhost @exhange_name = exchange_name @user = user @pw = pw $logger.debug "RabbitNotifier>host: #{@host} port #{@port} vhost #{@vhost} " @default_options = {} @default_options['version'] = "1.1" @default_options['host'] ||= Socket.gethostname @default_options['level'] ||= Semlog::UNKNOWN @default_options['facility'] ||= 'RabbitNotifier' end
Public Instance Methods
channel()
click to toggle source
# File lib/semlog/rabbit_notifier.rb, line 68 def channel connect @channel ||= @connection.create_channel end
connect()
click to toggle source
# File lib/semlog/rabbit_notifier.rb, line 33 def connect unless @connection @connection = Bunny.new(:host => @host, :vhost => @vhost, :user => @user, :password => @pw) @connection.start end @connection end
data_to_json(data)
click to toggle source
# File lib/semlog/rabbit_notifier.rb, line 60 def data_to_json(data) Oj.dump(gelfify(data)) end
exchange()
click to toggle source
# File lib/semlog/rabbit_notifier.rb, line 73 def exchange @exchange ||= channel.fanout(exhange_name, durable: true) end
gelfify(data)
click to toggle source
# File lib/semlog/rabbit_notifier.rb, line 41 def gelfify(data) gdata = @default_options.dup data.keys.each do |key| value, key_s = data[key], key.to_s if ['host', 'level', 'version', 'short_message', 'full_message', 'timestamp', 'facility', 'line', 'file'].index(key_s) gdata[key_s] = value elsif key_s == 'action' gdata["_application_action"] = value elsif key_s == 'id' gdata["_application_id"] = value elsif key_s[0] != '_' gdata["_#{key_s}"] = value else gdata[key_s] = value end end gdata end
notify!(data)
click to toggle source
# File lib/semlog/rabbit_notifier.rb, line 64 def notify!(data) exchange.publish(data_to_json(data)) end