class LogSanity::RequestLogger
Public Class Methods
new(app)
click to toggle source
# File lib/log_sanity/middleware/request_logger.rb, line 4 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/log_sanity/middleware/request_logger.rb, line 8 def call(env) request = ActionDispatch::Request.new(env) conditionally_silence(request) do |silence| begin start(request: request) resp = @app.call(env) resp[2] = Rack::BodyProxy.new(resp[2]) do finish(env: env, request: request, response: resp, silence: silence) end resp rescue Exception => e finish(env: env, request: request, exception: e, silence: silence) raise e end end ensure ActiveSupport::LogSubscriber.flush_all! end
conditionally_silence(request) { |silence| ... }
click to toggle source
# File lib/log_sanity/middleware/request_logger.rb, line 28 def conditionally_silence(request) if silence = silence_path?(request) logger.silence do yield silence end else yield silence end end
Private Instance Methods
finish(params)
click to toggle source
# File lib/log_sanity/middleware/request_logger.rb, line 48 def finish(params) instrumenter = ActiveSupport::Notifications.instrumenter instrumenter.finish 'request.action_dispatch', params end
logger()
click to toggle source
# File lib/log_sanity/middleware/request_logger.rb, line 64 def logger Rails.logger end
silence_path?(request)
click to toggle source
# File lib/log_sanity/middleware/request_logger.rb, line 53 def silence_path?(request) Rails.application.config.logsanity.silence_paths.any? do |s| case s when Regexp s =~ request.path when String s == request.path end end end
start(params)
click to toggle source
# File lib/log_sanity/middleware/request_logger.rb, line 42 def start(params) LogSanity.reset_fields instrumenter = ActiveSupport::Notifications.instrumenter instrumenter.start 'request.action_dispatch', params end