discourse/config/initializers/100-silence_logger.rb
Sam Saffron d0d5a138c3
DEV: stop freezing frozen strings
We have the `# frozen_string_literal: true` comment on all our
files. This means all string literals are frozen. There is no need
to call #freeze on any literals.

For files with `# frozen_string_literal: true`

```
puts %w{a b}[0].frozen?
=> true

puts "hi".frozen?
=> true

puts "a #{1} b".frozen?
=> true

puts ("a " + "b").frozen?
=> false

puts (-("a " + "b")).frozen?
=> true
```

For more details see: https://samsaffron.com/archive/2018/02/16/reducing-string-duplication-in-ruby
2020-04-30 16:48:53 +10:00

45 lines
1.2 KiB
Ruby

# frozen_string_literal: true
class SilenceLogger < Rails::Rack::Logger
PATH_INFO = 'PATH_INFO'
HTTP_X_SILENCE_LOGGER = 'HTTP_X_SILENCE_LOGGER'
def initialize(app, opts = {})
@app = app
@opts = opts
@opts[:silenced] ||= []
# Rails introduces something called taggers in the Logger, needs to be initialized
super(app)
end
def call(env)
path_info = env[PATH_INFO]
override = false
if env[HTTP_X_SILENCE_LOGGER] ||
@opts[:silenced].include?(path_info) ||
path_info.start_with?('/logs') ||
path_info.start_with?('/user_avatar') ||
path_info.start_with?('/letter_avatar')
if ::Logster::Logger === Rails.logger
override = true
Rails.logger.override_level = Logger::WARN
end
@app.call(env)
else
super(env)
end
ensure
Rails.logger.override_level = nil if override
end
end
silenced = [
"/mini-profiler-resources/results",
"/mini-profiler-resources/includes.js",
"/mini-profiler-resources/includes.css",
"/mini-profiler-resources/jquery.tmpl.js"
]
Rails.configuration.middleware.swap Rails::Rack::Logger, SilenceLogger, silenced: silenced