2013-02-06 03:16:51 +08:00
|
|
|
class SilenceLogger < Rails::Rack::Logger
|
2014-05-07 06:23:52 +08:00
|
|
|
PATH_INFO = 'PATH_INFO'.freeze
|
|
|
|
HTTP_X_SILENCE_LOGGER = 'HTTP_X_SILENCE_LOGGER'.freeze
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
def initialize(app, opts = {})
|
|
|
|
@app = app
|
|
|
|
@opts = opts
|
|
|
|
@opts[:silenced] ||= []
|
2013-02-26 00:42:20 +08:00
|
|
|
|
|
|
|
# Rails introduces something called taggers in the Logger, needs to be initialized
|
2013-02-06 03:16:51 +08:00
|
|
|
super(app)
|
|
|
|
end
|
|
|
|
|
|
|
|
def call(env)
|
|
|
|
prev_level = Rails.logger.level
|
2014-05-07 06:23:52 +08:00
|
|
|
path_info = env[PATH_INFO]
|
2013-02-06 03:16:51 +08:00
|
|
|
|
2014-05-07 06:23:52 +08:00
|
|
|
if env[HTTP_X_SILENCE_LOGGER] ||
|
|
|
|
@opts[:silenced].include?(path_info) ||
|
2014-05-27 22:27:49 +08:00
|
|
|
path_info.start_with?('/logs') ||
|
2014-05-31 00:16:23 +08:00
|
|
|
path_info.start_with?('/user_avatar') ||
|
|
|
|
path_info.start_with?('/letter_avatar')
|
2013-02-06 03:16:51 +08:00
|
|
|
Rails.logger.level = Logger::WARN
|
2014-05-07 06:23:52 +08:00
|
|
|
@app.call(env)
|
2013-02-06 03:16:51 +08:00
|
|
|
else
|
|
|
|
super(env)
|
|
|
|
end
|
|
|
|
ensure
|
|
|
|
Rails.logger.level = prev_level
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-05-07 06:23:52 +08:00
|
|
|
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
|
|
|
|
]
|
2013-03-23 23:02:59 +08:00
|
|
|
Rails.configuration.middleware.swap Rails::Rack::Logger, SilenceLogger, silenced: silenced
|