class BookingSync::API::Middleware::Logger
Provides logger for request and responses made by API
Client
. JSON data is displayed in an eye-friendly format. User can provide his own logger in BookingSync::API::Client.new
Log Levels
INFO - logged are only request method and URL. DEBUG - logged are headers and bodies of requests and responses.
Public Class Methods
new(app, logger)
click to toggle source
Calls superclass method
# File lib/bookingsync/api/middleware/logger.rb, line 14 def initialize(app, logger) super(app) @logger = logger end
Public Instance Methods
call(env)
click to toggle source
# File lib/bookingsync/api/middleware/logger.rb, line 21 def call(env) info "Request #{env.method.upcase} #{env.url.to_s}" debug("Request headers") { dump_headers env.request_headers } debug("Request body") { dump_body env.body } @app.call(env).tap do |response| info "Response X-Request-Id: #{env.response_headers['X-Request-Id']} #{env.method.upcase} #{env.url.to_s}" debug("Response headers") { dump_headers response.env.response_headers } debug("Response status") { response.env.status } debug("Response body") { dump_body response.env.body } end end
Private Instance Methods
dump_body(body)
click to toggle source
# File lib/bookingsync/api/middleware/logger.rb, line 35 def dump_body(body) if body && body != "" JSON.pretty_generate(JSON.parse(body)) else "No body" end rescue JSON::ParserError "Invalid JSON" end
dump_headers(headers)
click to toggle source
# File lib/bookingsync/api/middleware/logger.rb, line 45 def dump_headers(headers) headers.map { |k, v| "#{k}: #{v.inspect}" }.join("\n") end