Sha256: 3dabb4af11052238dc4a447cd56745f10fa6f3ae7cc88b3fea521111f955762a

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

require 'rack/logger'
require 'silencer/util'
require 'silencer/hush'

module Silencer
  module Rack
    class Logger < ::Rack::Logger
      include Silencer::Util
      include Silencer::Hush

      def initialize(app, *args)
        opts     = extract_options!(args)
        @silence = wrap(opts.delete(:silence))
        @routes  = {
          'OPTIONS' => wrap(opts.delete(:options)) + @silence,
          'GET'     => wrap(opts.delete(:get)) + @silence,
          'HEAD'    => wrap(opts.delete(:head)) + @silence,
          'POST'    => wrap(opts.delete(:post)) + @silence,
          'PUT'     => wrap(opts.delete(:put)) + @silence,
          'DELETE'  => wrap(opts.delete(:delete)) + @silence,
          'TRACE'   => wrap(opts.delete(:trace)) + @silence,
          'CONNECT' => wrap(opts.delete(:connect)) + @silence,
          'PATCH'   => wrap(opts.delete(:patch)) + @silence,
        }

        super app, *args
      end

      def call(env)
        logger       = ::Logger.new(env['rack.errors'])
        logger.level = (silence_request?(env) ? ::Logger::ERROR : @level)

        env['rack.logger'] = logger
        @app.call(env)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
silencer-1.0.0.rc3 lib/silencer/rack/logger.rb
silencer-1.0.0.rc2 lib/silencer/rack/logger.rb