Class: G5::Logger::Log
- Inherits:
-
Object
- Object
- G5::Logger::Log
- Defined in:
- lib/g5/logger/log.rb
Constant Summary collapse
- Levels =
%w(debug info warn error fatal unknown)
Class Method Summary collapse
- .level(level) ⇒ Object
- .log(attributes) ⇒ Object
- .log_entry(hash) ⇒ Object
- .log_json_req_resp(request, response, options = {}) ⇒ Object
- .log_method(code) ⇒ Object
- .redact(hash) ⇒ Object
- .redact_array(array) ⇒ Object
- .redactable?(value) ⇒ Boolean
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, ={}) = .merge( status: response.try(:code), request: request, response: response.try(:body)) send(log_method(response.code), ) 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
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 |