Silencer

Gem Version Build Status Dependency Status

Silencer is a simple rack-middleware for Rails that can selectively disable logging on per-action basis. It's based on a blog post by Dennis Reimann.

Note: Silencer is only threadsafe in Rails version 4.2.6 and later.

Installation

Just add silencer to your Gemfile:

gem 'silencer'

Usage

Rails

Create an initializer (like config/initializers/silencer.rb) with the contents:

require 'silencer/logger'

Rails.application.configure do
  config.middleware.swap Rails::Rack::Logger, Silencer::Logger, :silence => ["/noisy/action.json"]
end

Rack

require 'silencer/logger'

use Silencer::Logger, :silence => ["/noisy/action.json"]

Configuration

Or if you'd prefer, you can pass it regular expressions:

config.middleware.swap Rails::Rack::Logger, Silencer::Logger, :silence => [%r{^/assets/}]

Or you can silence specific request methods only:

config.middleware.swap Rails::Rack::Logger, Silencer::Logger, :get => [%r{^/assets/}], :post => [%r{^/some_path}]

Silencer's logger will serve as a drop-in replacement for Rails' default logger. It will not suppress any logging by default, simply pass it an array of urls via the options hash. You can also send it a 'X-SILENCE-LOGGER' header (with any value) with your request and that will also produce the same behavior.

All options

Silencer supports the following configuration options.

:silence - Silences matching requests regardless of request method
:get     - Silences matching GET requests
:head    - Silences matching HEAD requests
:post    - Silences matching POST requests
:put     - Silences matching PUT requests
:delete  - Silences matching DELETE requests
:patch   - Silences matching PATCH requests
:trace   - Silences matching TRACE requests
:connect - Silences matching CONNECT requests
:options - Silences matching OPTIONS requests

Rails 2.3

Rails 2.3.x introduced a tagged logging feature. If you are using tagged logging with Rails 2.3 you can also pass taggers via the middleware:

config.middleware.swap Rails::Rack::Logger, Silencer::Logger, config.log_tags, :silence => [%r{^/assets/}]

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright (c) 2012 Steve Agalloco. See LICENSE for details.