class Imprint::Tracer

Constants

RAILS_REQUEST_ID
TRACER_HEADER
TRACER_KEY
TRACER_TIMESTAMP
TRACE_ID_DEFAULT

Public Class Methods

get_pid() click to toggle source
# File lib/imprint/tracer.rb, line 30
def self.get_pid
  "#{$$}"
end
get_trace_id() click to toggle source
# File lib/imprint/tracer.rb, line 18
def self.get_trace_id
  if Thread.current.key?(TRACER_KEY)
    Thread.current[TRACER_KEY]
  else
    TRACE_ID_DEFAULT
  end
end
get_trace_timestamp() click to toggle source
# File lib/imprint/tracer.rb, line 26
def self.get_trace_timestamp
  Time.now.utc.strftime("%Y-%m-%dT%H:%M:%S.%6N")
end
insert_trace_id_in_message(message, severity = nil) click to toggle source
# File lib/imprint/tracer.rb, line 34
def self.insert_trace_id_in_message(message, severity = nil)
  if message && message.is_a?(String) && message.length > 1 && !message.include?('trace_id=')
    trace_id = get_trace_id

    if trace_id && trace_id != TRACE_ID_DEFAULT
      message.insert 0, "#{get_trace_timestamp} #{severity} "
      message.gsub!("\n"," process_pid=#{get_pid} trace_id=#{trace_id}\n")
    end
  end
end
rand_trace_id() click to toggle source
# File lib/imprint/tracer.rb, line 45
def self.rand_trace_id
  SecureRandom.uuid
end
set_trace_id(id, rack_env = {}) click to toggle source
# File lib/imprint/tracer.rb, line 11
def self.set_trace_id(id, rack_env = {})
  Thread.current[TRACER_TIMESTAMP] = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%S.%6N")
  Thread.current[TRACER_KEY] = id
  # setting to the rack_env, gives error tracking support in some systems
  rack_env[TRACER_KEY] = id
end