Class: LoggingElf::GelfData

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Validations
Defined in:
lib/logging_elf/gelf_data.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(gelf_data = {}) ⇒ GelfData

Returns a new instance of GelfData.



23
24
25
26
27
28
29
# File 'lib/logging_elf/gelf_data.rb', line 23

def initialize(gelf_data = {})
  super
  self.additional_fields ||= {}
  self.host ||= LoggingElf.config.host if LoggingElf.config
  return if gelf_data.nil?
  add_fields(gelf_data)
end

Instance Attribute Details

#additional_fieldsObject

Returns the value of attribute additional_fields.



20
21
22
# File 'lib/logging_elf/gelf_data.rb', line 20

def additional_fields
  @additional_fields
end

Class Method Details

.add_exception_details(gelf_data, error) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/logging_elf/gelf_data.rb', line 71

def self.add_exception_details(gelf_data, error)
  gelf_data.full_message = gelf_data.short_message =
    "<#{error.class.name}> #{error.message}"
  if error.backtrace
    gelf_data.full_message << "\n\t" << error.backtrace.join("\n\t")
  end
end

.add_hash_data(gelf_data, data) ⇒ Object



50
51
52
53
54
55
56
57
58
59
# File 'lib/logging_elf/gelf_data.rb', line 50

def self.add_hash_data(gelf_data, data)
  gelf_data.add_fields(data)

  unless gelf_data.short_message
    gelf_data.short_message = data[:message] || data["message"]
    if gelf_data.short_message.blank?
      gelf_data.short_message = data.map { |k, v| "#{k}='#{v}'" }.join(" ")
    end
  end
end

.from_log_event(log_event) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/logging_elf/gelf_data.rb', line 39

def self.from_log_event(log_event)
  gd = GelfData.new(level: log_event.level, facility: log_event.logger)
  case log_event.data
  when String     then gd.short_message = log_event.data
  when Hash       then add_hash_data(gd, log_event.data)
  when Exception  then add_exception_details gd, log_event.data
  end
  set_backtrace_data gd, log_event
  gd
end

.set_backtrace_data(gelf_data, event) ⇒ Object



79
80
81
82
83
# File 'lib/logging_elf/gelf_data.rb', line 79

def self.set_backtrace_data(gelf_data, event)
  gelf_data.add_fields(file: event.file) if event.file
  gelf_data.add_fields(file: event.line) if event.line
  gelf_data.add_fields(file: event.method) if event.method
end

Instance Method Details

#add_fields(params_hash) ⇒ Object



61
62
63
64
65
66
67
68
69
# File 'lib/logging_elf/gelf_data.rb', line 61

def add_fields(params_hash)
  params_hash.each do |key, value|
    if required_gelf_attributes.keys.include? key
      send("#{key}=", value)
    else
      additional_fields["_#{key}".to_sym] = value
    end
  end
end

#required_gelf_attributesObject



35
36
37
# File 'lib/logging_elf/gelf_data.rb', line 35

def required_gelf_attributes
  attributes
end

#to_gelfObject



31
32
33
# File 'lib/logging_elf/gelf_data.rb', line 31

def to_gelf
  required_gelf_attributes.merge additional_fields
end