class Lumberjack::EcsDevice::EcsTagsFormatter
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_ecs_device.rb, line 59 def initialize(device = nil) @device = device end
Public Instance Methods
call(tags)
click to toggle source
# File lib/lumberjack_ecs_device.rb, line 63 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_ecs_device.rb, line 101 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_ecs_device.rb, line 83 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