Class: Semlog::GelflogAppender

Inherits:
SemanticLogger::Subscriber
  • Object
show all
Defined in:
lib/semlog/gelflog_appender.rb

Constant Summary collapse

LEVEL_MAP =

Map Semantic Logger levels to Graylog levels

{
  fatal: Semlog::FATAL,
  error: Semlog::ERROR,
  warn: Semlog::WARN,
  info: Semlog::INFO,
  debug: Semlog::DEBUG,
  trace: Semlog::DEBUG
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}, &block) ⇒ GelflogAppender

Returns a new instance of GelflogAppender.


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/semlog/gelflog_appender.rb', line 19

def initialize(options = {}, &block)
  options = options.dup

  @rabbit_host=options.delete(:host)|| 'localhost'
  @port=options.delete(:port)|| 5672
  @vhost=options.delete(:vhost)||''
  @exchange=options.delete(:exchange)|| ''
  @user=options.delete(:user)||''
  @pw=options.delete(:pw)||''
  @app_name = options.delete(:application) || 'Semlog'

  super(options, &block)
  self.application = @app_name

  reopen
end

Instance Attribute Details

#notifierObject (readonly)

Returns the value of attribute notifier.


17
18
19
# File 'lib/semlog/gelflog_appender.rb', line 17

def notifier
  @notifier
end

Instance Method Details

#log(log) ⇒ Object

Forward log messages


50
51
52
53
54
55
56
57
58
59
60
# File 'lib/semlog/gelflog_appender.rb', line 50

def log(log)
  return false unless should_log?(log)

  begin
    @notifier.notify!(make_hash(log))
  rescue => e
    $logger.error "Semlog::Appender::GelflogAppender >EXCEPTION> #{e}"
  end

  true
end

#make_hash(log) ⇒ Object


40
41
42
43
44
45
46
47
# File 'lib/semlog/gelflog_appender.rb', line 40

def make_hash(log)
  h = log.to_h(host, application)
  h[:level] = map_level(log)
  h[:level_str] = log.level.to_s
  h[:short_message] = h.delete(:message) if log.message && !h.key?("short_message") && !h.key?(:short_message)
  h[:request_uid] = h.delete(:tags).first if log.tags && log.tags.count > 0
  h
end

#map_level(log) ⇒ Object

Returns the Graylog level for the supplied log message


63
64
65
# File 'lib/semlog/gelflog_appender.rb', line 63

def map_level(log)
  LEVEL_MAP[log.level]
end

#reopenObject


36
37
38
# File 'lib/semlog/gelflog_appender.rb', line 36

def reopen
  @notifier = RabbitNotifier.new(host: @rabbit_host, port: @port, vhost: @vhost, exchange_name: @exchange, user: @user, pw: @pw)
end