Module: Sinatra::QuietLogger

Defined in:
lib/sinatra/quiet_logger.rb

Overview

Sinatra::QuietLogger

QuietLogger extension allows you to define paths excluded from logging using the quiet_logger_prefixes setting. It is inspired from rails quiet_logger, but handles multiple paths.

Usage

Classic Application

You have to require the quiet_logger, set the prefixes and register the extension in your application.

require 'sinatra'
require 'sinatra/quiet_logger'

set :quiet_logger_prefixes, %w(css js images fonts)
register Sinatra::QuietLogger

Modular Application

The same for modular application:

require 'sinatra/base'
require 'sinatra/quiet_logger'

set :quiet_logger_prefixes, %w(css js images fonts)

class App < Sinatra::Base
  register Sinatra::QuietLogger
end

Class Method Summary collapse

Class Method Details

.registered(app) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/sinatra/quiet_logger.rb', line 37

def self.registered(app)
  quiet_logger_prefixes = begin
    app.settings.quiet_logger_prefixes.join('|')
  rescue StandardError
    ''
  end
  return warn('You need to specify the paths you wish to exclude from logging via `set :quiet_logger_prefixes, %w(images css fonts)`') if quiet_logger_prefixes.empty?

  const_set('QUIET_LOGGER_REGEX', %r(\A/{0,2}(?:#{quiet_logger_prefixes})))
  ::Rack::CommonLogger.prepend(
    ::Module.new do
      def log(env, *)
        super unless env['PATH_INFO'] =~ QUIET_LOGGER_REGEX
      end
    end
  )
end