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.
Just add silencer to your Gemfile:
gem 'silencer'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,
config.log_tags,
silence: ["/noisy/action.json"]
)
endrequire 'silencer/logger'
use Silencer::Logger, silence: ["/noisy/action.json"]Or if you'd prefer, you can pass it regular expressions:
config.middleware.swap(
Rails::Rack::Logger,
Silencer::Logger,
config.log_tags,
silence: [%r{^/assets/}]
)Or you can silence specific request methods only:
config.middleware.swap(
Rails::Rack::Logger,
Silencer::Logger,
config.log_tags,
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 an X-SILENCE-LOGGER header (with any value) with your request and that will also produce the same behavior.
Silencer supports the following configuration options.
| Configuration | Description | Default |
|---|---|---|
silence |
Silences matching requests regardless of request method | None |
get |
Silences matching GET requests | None |
head |
Silences matching HEAD requests | None |
post |
Silences matching POST requests | None |
put |
Silences matching PUT requests | None |
delete |
Silences matching DELETE requests | None |
patch |
Silences matching PATCH requests | None |
trace |
Silences matching TRACE requests | None |
connect |
Silences matching CONNECT requests | None |
options |
Silences matching OPTIONS requests | None |
enable_header |
Enable/disable X-SILENCE-LOGGER header support | true |
- Fork the project.
- Make your feature addition or bugfix.
- 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.