Class: Semlog::GelflogAppender
- Inherits:
-
SemanticLogger::Subscriber
- Object
- SemanticLogger::Subscriber
- Semlog::GelflogAppender
- 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
-
#notifier ⇒ Object
readonly
Returns the value of attribute notifier.
Instance Method Summary collapse
-
#initialize(options = {}, &block) ⇒ GelflogAppender
constructor
A new instance of GelflogAppender.
-
#log(log) ⇒ Object
Forward log messages.
- #make_hash(log) ⇒ Object
-
#map_level(log) ⇒ Object
Returns the Graylog level for the supplied log message.
- #reopen ⇒ Object
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( = {}, &block) = .dup @rabbit_host=.delete(:host)|| 'localhost' @port=.delete(:port)|| 5672 @vhost=.delete(:vhost)||'' @exchange=.delete(:exchange)|| '' @user=.delete(:user)||'' @pw=.delete(:pw)||'' @app_name = .delete(:application) || 'Semlog' super(, &block) self.application = @app_name reopen end |
Instance Attribute Details
#notifier ⇒ Object (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. && !h.key?("short_message") && !h.key?(:short_message) h[:request_uid] = h.delete(:tags).first if log. && log..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 |
#reopen ⇒ Object
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 |