class ElkLogger

Constants

SEV_LABEL
SUPER_VERSION
VERSION

Attributes

calling_cname[R]
calling_mname[R]
filename[R]

Public Class Methods

new(logdev, shift_age = 0, shift_size = 1048576) click to toggle source
Calls superclass method
# File lib/elklogger.rb, line 67
def initialize(logdev, shift_age = 0, shift_size = 1048576)
  @calling_mname = nil   # calling method name
  @calling_cname = nil   # calling class name
  @filename = logdev

  super(logdev, shift_age, shift_size)
end

Public Instance Methods

format_message(severity, datetime, progname, msg) click to toggle source
# File lib/elklogger.rb, line 75
def format_message(severity, datetime, progname, msg)
  {
    :body => msg.to_s,
    :head => {
      :app => appname,
      :level => severity,
      :counter => counter_number,
      :tname => thread_name || filename.to_s.split('/').last.to_s.gsub(/\.log\.elk$/, ''),
      :pid => ruby_pid,
      :mname => calling_mname,
      :cname => calling_cname,
      :ip => ipv4_address.to_s
    },
    :timestamp => datetime.to_datetime.strftime("%Q").to_i
  }.to_json + "\n"
end

Private Instance Methods

add(severity, message = nil, progname = nil, &block) click to toggle source
Calls superclass method
# File lib/elklogger.rb, line 96
def add(severity, message = nil, progname = nil, &block)
  caller_info = caller_locations(2, 1).first
  @calling_mname = caller_info.try(:label).to_s

  @calling_cname = caller_info.try(:path).to_s
  if defined?(Rails) && !@calling_cname.empty?
    @calling_cname = Pathname.new(@calling_cname).relative_path_from(Rails.root) rescue @calling_cname
  end
  @calling_cname = @calling_cname.to_s + ":#{caller_info.try(:lineno).to_s}"

  super(severity, message, progname, &block)
end