class Lumberjack::DataDogDevice::DataDogTagsFormatter

Formatter to remove empty tag values and expand the error tag if it is an exception.

Public Class Methods

new(device = nil) click to toggle source
# File lib/lumberjack_data_dog_device.rb, line 61
def initialize(device = nil)
  @device = device
end

Public Instance Methods

call(tags) click to toggle source
# File lib/lumberjack_data_dog_device.rb, line 65
def call(tags)
  copy = {}
  tags.each do |name, value|
    value = remove_empty_values(value)
    next if value.nil?

    if name == "error" && value.is_a?(Exception)
      copy[name] = exception_hash(value, @device)
    elsif name.include?(".")
      names = name.split(".")
      next_value_in_hash(copy, names, value)
    else
      copy[name] = value
    end
  end
  copy
end

Private Instance Methods

next_value_in_hash(hash, keys, value) click to toggle source
# File lib/lumberjack_data_dog_device.rb, line 103
def next_value_in_hash(hash, keys, value)
  key = keys.first
  if keys.size == 1
    hash[key] = value
  else
    current = hash[key]
    unless current.is_a?(Hash)
      current = {}
      hash[key] = current
    end
    next_value_in_hash(current, keys[1, keys.size], value)
  end
end
remove_empty_values(value) click to toggle source
# File lib/lumberjack_data_dog_device.rb, line 85
def remove_empty_values(value)
  if value.is_a?(String)
    value unless value.empty?
  elsif value.is_a?(Hash)
    new_hash = {}
    value.each do |key, val|
      val = remove_empty_values(val)
      new_hash[key] = val unless val.nil?
    end
    new_hash unless new_hash.empty?
  elsif value.is_a?(Array)
    new_array = value.collect { |val| remove_empty_values(val) }
    new_array unless new_array.empty?
  else
    value
  end
end