Class: Vx::Lib::Instrumentation::Logger::Formatter
- Inherits:
-
Object
- Object
- Vx::Lib::Instrumentation::Logger::Formatter
- Defined in:
- lib/vx/lib/instrumentation/logger.rb
Class Method Summary collapse
- .call(severity, _, _, msg) ⇒ Object
- .make_safe_hash(msg, options = {}) ⇒ Object
- .safe_value(value, options = {}) ⇒ Object
Class Method Details
.call(severity, _, _, msg) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/vx/lib/instrumentation/logger.rb', line 76 def self.call(severity, _, _, msg) values = Lib::Instrumentation.default.dup case when msg.is_a?(Hash) values.deep_merge! msg when msg.respond_to?(:to_h) values.merge! msg.to_h else values.deep_merge!(message: msg) end values.deep_merge!(severity: severity.to_s.downcase) values = make_safe_hash(values) if ENV['VX_INSTRUMENTATION_PRETTY'] ::JSON.pretty_generate(values) + "\n" else ::JSON.dump(values) + "\n" end end |
.make_safe_hash(msg, options = {}) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/vx/lib/instrumentation/logger.rb', line 63 def self.make_safe_hash(msg, = {}) msg.inject({}) do |acc, pair| msg_key, msg_value = pair if msg_key == "@fields" acc[msg_key] = make_safe_hash(msg_value, join_arrays: true) else acc[msg_key] = safe_value(msg_value, ) end acc end end |
.safe_value(value, options = {}) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/vx/lib/instrumentation/logger.rb', line 42 def self.safe_value(value, = {}) new_value = case value.class.to_s when "String", "Fixnum", "Float" value when "Symbol", "BigDecimal" value.to_s when "Array" value = value.map(&:to_s) [:join_arrays] ? value.join("\n") : value when 'NilClass' nil else value.inspect end if new_value.is_a?(String) new_value.encode('UTF-8', {:invalid => :replace, :undef => :replace, :replace => '?'}) else new_value end end |