class RailsSemanticLogger::Rack::Logger
Attributes
logger[R]
started_request_log_level[RW]
Public Class Methods
new(app, taggers = nil)
click to toggle source
# File lib/rails_semantic_logger/rack/logger.rb, line 15 def initialize(app, taggers = nil) @app = app @taggers = taggers || [] end
Public Instance Methods
call(env)
click to toggle source
# File lib/rails_semantic_logger/rack/logger.rb, line 20 def call(env) request = ActionDispatch::Request.new(env) # Check for named tags (Hash) if @taggers && !@taggers.empty? tags = @taggers.is_a?(Hash) ? compute_named_tags(request) : compute_tags(request) logger.tagged(tags) { call_app(request, env) } else call_app(request, env) end end
Private Instance Methods
call_app(request, env)
click to toggle source
# File lib/rails_semantic_logger/rack/logger.rb, line 37 def call_app(request, env) instrumenter = ActiveSupport::Notifications.instrumenter instrumenter_state = instrumenter.start "request.action_dispatch", request: request instrumenter_finish = lambda { instrumenter.finish_with_state(instrumenter_state, "request.action_dispatch", request: request) } logger.send(self.class.started_request_log_level) { started_request_message(request) } status, headers, body = @app.call(env) body = ::Rack::BodyProxy.new(body, &instrumenter_finish) [status, headers, body] rescue Exception instrumenter_finish.call raise end
logger()
click to toggle source
# File lib/rails_semantic_logger/rack/logger.rb, line 95 def logger self.class.logger end
started_request_message(request)
click to toggle source
# File lib/rails_semantic_logger/rack/logger.rb, line 53 def started_request_message(request) { message: "Started", payload: { method: request.request_method, path: request.filtered_path, ip: request.remote_ip } } end