Class: G5::Logger::Log

Inherits:
Object
  • Object
show all
Defined in:
lib/g5/logger/log.rb

Constant Summary collapse

Levels =
%w(debug info warn error fatal unknown)

Class Method Summary collapse

Class Method Details

.level(level) ⇒ Object



19
20
21
# File 'lib/g5/logger/log.rb', line 19

def level(level)
  Levels.include?(level) ? level : :info
end

.log(attributes) ⇒ Object



13
14
15
16
17
# File 'lib/g5/logger/log.rb', line 13

def log(attributes)
  default_merge = {source_app_name: Config[:source_app_name]}.merge(Config[:default_log_hash]).merge(attributes)
  log_level     = level(default_merge.delete(:level))
  Config[:logger].send(log_level, log_entry(default_merge))
end

.log_entry(hash) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/g5/logger/log.rb', line 23

def log_entry(hash)
  scrubbed = redact hash.clone
  if  G5::Logger::KEY_VALUE_FORMAT== G5::Logger::Config[:format]
    scrubbed.keys.collect { |key| "#{key}=\"#{hash[key]}\"" }.join(", ")
  else
    scrubbed.to_json
  end
end

.log_json_req_resp(request, response, options = {}) ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/g5/logger/log.rb', line 32

def log_json_req_resp(request, response, options={})
  options = options.merge(
      status:   response.try(:code),
      request:  request,
      response: response.try(:body))

  send(log_method(response.code), options)
end

.log_method(code) ⇒ Object



41
42
43
44
# File 'lib/g5/logger/log.rb', line 41

def log_method(code)
  error = code > 299 rescue false
  error ? :error : :info
end

.redact(hash) ⇒ Object



46
47
48
49
50
51
52
53
# File 'lib/g5/logger/log.rb', line 46

def redact(hash)
  hash.keys.each do |key|
    redact(hash[key]) if hash[key].kind_of?(Hash)
    redact_array(hash[key]) if hash[key].kind_of?(Array)
    hash[key] = Config[:redact_value] if redactable?(key)
  end
  hash
end

.redact_array(array) ⇒ Object



66
67
68
69
70
# File 'lib/g5/logger/log.rb', line 66

def redact_array(array)
  array.each do |array_val|
    redact array_val if array_val.kind_of?(Hash)
  end
end

.redactable?(value) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
58
59
60
61
62
63
64
# File 'lib/g5/logger/log.rb', line 55

def redactable?(value)
  return false if value.blank? || ![String, Symbol].include?(value.class)
  !!Config[:redact_keys].detect { |rk|
    if rk.class == String
      rk == value
    else
      value.match(rk)
    end
  }
end