discourse/config/initializers/silence_logger.rb

39 lines
1 KiB
Ruby
Raw Normal View History

2013-02-05 14:16:51 -05:00
class SilenceLogger < Rails::Rack::Logger
PATH_INFO = 'PATH_INFO'.freeze
HTTP_X_SILENCE_LOGGER = 'HTTP_X_SILENCE_LOGGER'.freeze
2013-02-05 14:16:51 -05:00
def initialize(app, opts = {})
@app = app
@opts = opts
@opts[:silenced] ||= []
2013-02-25 11:42:20 -05:00
# Rails introduces something called taggers in the Logger, needs to be initialized
2013-02-05 14:16:51 -05:00
super(app)
end
def call(env)
prev_level = Rails.logger.level
path_info = env[PATH_INFO]
2013-02-05 14:16:51 -05:00
if env[HTTP_X_SILENCE_LOGGER] ||
@opts[:silenced].include?(path_info) ||
2014-05-27 10:27:49 -04:00
path_info.start_with?('/logs') ||
path_info.start_with?('/user_avatar')
2013-02-05 14:16:51 -05:00
Rails.logger.level = Logger::WARN
@app.call(env)
2013-02-05 14:16:51 -05:00
else
super(env)
end
ensure
Rails.logger.level = prev_level
end
end
silenced = [
"/mini-profiler-resources/results".freeze,
"/mini-profiler-resources/includes.js".freeze,
"/mini-profiler-resources/includes.css".freeze,
"/mini-profiler-resources/jquery.tmpl.js".freeze
]
Rails.configuration.middleware.swap Rails::Rack::Logger, SilenceLogger, silenced: silenced