Module: Jets::Controller::Decorate::Logging
- Extended by:
- ActiveSupport::Concern
- Included in:
- Base
- Defined in:
- lib/jets/controller/decorate/logging.rb
Instance Method Summary collapse
- #dispatch! ⇒ Object
- #event_log ⇒ Object
-
#filter_json_log(json_text) ⇒ Object
Append _log to reduce chance of name collision with user defined methods.
-
#json_dump_log(data) ⇒ Object
Handles binary data safely.
- #log_event? ⇒ Boolean
-
#log_finish(options = {}) ⇒ Object
Documented interface method, careful not to rename.
-
#log_start ⇒ Object
Documented interface method, careful not to rename.
- #processing_log ⇒ Object
Instance Method Details
#dispatch! ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/jets/controller/decorate/logging.rb', line 14 def dispatch! t1 = Time.now log_start triplet = super # Abstract#dispatch! took = Time.now - t1 log_finish status: status, took: took triplet end |
#event_log ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/jets/controller/decorate/logging.rb', line 54 def event_log event = @event.dup # clone to display event if event['isBase64Encoded'] event['body'] = '[BASE64_ENCODED]' else event['body'] = filter_json_log(event['body']) end event["multiValueQueryStringParameters"] = parameter_filter.filter(event['multiValueQueryStringParameters']) if event['multiValueQueryStringParameters'] event["pathParameters"] = parameter_filter.filter(event['pathParameters']) if event['pathParameters'] event["queryStringParameters"] = parameter_filter.filter(event['queryStringParameters']) if event['queryStringParameters'] json_dump_log(event) end |
#filter_json_log(json_text) ⇒ Object
Append _log to reduce chance of name collision with user defined methods
70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/jets/controller/decorate/logging.rb', line 70 def filter_json_log(json_text) return json_text if json_text.blank? begin hash_params = JSON.parse(json_text) filtered_params = parameter_filter.filter(hash_params) JSON.dump(filtered_params) rescue JSON::ParserError '[FILTERED]' end end |
#json_dump_log(data) ⇒ Object
Handles binary data safely
83 84 85 86 87 88 |
# File 'lib/jets/controller/decorate/logging.rb', line 83 def json_dump_log(data) JSON.dump(data) rescue Encoding::UndefinedConversionError data['body'] = '[BINARY]' JSON.dump(data) end |
#log_event? ⇒ Boolean
43 44 45 46 |
# File 'lib/jets/controller/decorate/logging.rb', line 43 def log_event? return false if ENV['JETS_LOG_EVENT'] == '0' Jets.config.logging.event end |
#log_finish(options = {}) ⇒ Object
Documented interface method, careful not to rename
49 50 51 52 |
# File 'lib/jets/controller/decorate/logging.rb', line 49 def log_finish(={}) status, took = [:status], [:took] logger.info "Completed Status Code #{status} in #{"%.3f" % took}s" end |
#log_start ⇒ Object
Documented interface method, careful not to rename
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/jets/controller/decorate/logging.rb', line 30 def log_start # Commented out Started because Jets::Rack::Logger middleware handles now # ip = request.ip # logger.info "Started (Jets) #{request.request_method} \"#{request.path}\" for #{ip} at #{Time.now}" logger.info processing_log logger.info " Raw Event: #{@event}" if ENV['JETS_LOG_RAW_EVENT'] logger.info " Event: #{event_log}" if log_event? params = filtered_parameters.to_h.except('controller', 'action') # JSON.dump makes logging look pretty in CloudWatch logs because it keeps it on 1 line logger.info " Parameters: #{JSON.dump(params)}" unless params.empty? end |
#processing_log ⇒ Object
23 24 25 26 27 |
# File 'lib/jets/controller/decorate/logging.rb', line 23 def processing_log processing = "Processing #{self.class.name}##{@meth}" processing << " (original method #{@original_meth})" if @original_meth processing end |