Sha256: c7f786787026654680182c22b8194a9bd12b3892b45f3e0c0f6664792b26c967

Contents?: true

Size: 866 Bytes

Versions: 1

Compression:

Stored size: 866 Bytes

Contents

module QodexRails
  module Middleware
    class RequestLogger
      def initialize(app)
        @app = app
        @mutex = Mutex.new  # Mutex for thread-safe logging
      end

      def call(env)
        start_time = Time.now
        status, headers, response = @app.call(env)
        end_time = Time.now

        request = Rack::Request.new(env)
        filtered_params = request.filtered_parameters  # Uses Rails' parameter filtering

        @mutex.synchronize do  # Ensure thread-safe logging
          Rails.logger.info <<~LOG
            Request to #{request.path_info}
            Method: #{request.request_method}
            Parameters: #{filtered_params.inspect}
            Response Status: #{status}
            Time Taken: #{(end_time - start_time) * 1000} ms
          LOG
        end

        [status, headers, response]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
qodex-rails-0.1.0 lib/qodex-rails/middleware.rb