class Logging::Appenders::Graylog
Provides an appender that can send log messages to graylog
Public Class Methods
new(name, opts = {})
click to toggle source
Calls superclass method
# File lib/logging/appenders/graylog.rb, line 24 def initialize(name, opts = {}) super(name, opts) @name = name @server = opts.fetch(:server, '127.0.0.1') @port = opts.fetch(:port, 12201) @max_chunk_size = opts.fetch(:max_chunk_size, 'WAN') hash = {} hash['host'] = opts.fetch(:host, Socket.gethostname) hash['facility'] = opts.fetch(:facility, 'gelf-rb') hash['level'] = LEVELS_MAP[opts.fetch(:level, 'DEBUG')] @gelf_notifier = GELF::Notifier.new(@server, @port, @max_chunk_size, hash) end
Private Instance Methods
format(event)
click to toggle source
# File lib/logging/appenders/graylog.rb, line 58 def format(event) event.inspect end
write(logevent)
click to toggle source
# File lib/logging/appenders/graylog.rb, line 39 def write(logevent) opts = {} opts[:logger] = @name opts[:level] = logevent.level opts[:timestamp] = logevent.time if logevent.data.respond_to?(:backtrace) trace = logevent.data.backtrace opts['_exception'] = format(logevent.data.class) opts[:short_message] = "Caught #{logevent.data.class}: #{logevent.data.message}" opts[:full_message] = "Backtrace:\n" + trace.join("\n") opts[:file] = trace[0].split(':')[0] opts[:line] = trace[0].split(':')[1] else opts[:short_message] = format(logevent.data) opts[:full_message] = @layout.format(logevent) end @gelf_notifier.notify!(opts) end