This gem provides a mechanism for wrapping a instance of
Logger with one that produces a less verbose output.
This can be used in situations where different parts of an application should produce different levels of output to the logs. A classic example is when using a framework that produces a lot of low value log output. You can normally control this by changing the log level, but that can impact other parts of your application sharing the same logger.
For example, in a Rails application ActionCable can log a lot of information to the logs with a severity level of
INFO. This can produce an excessive amount of output which can bury more important information in the logs. However, increasing the log level would end up turning off info logs for the entire application.
You could override the logger to use one with a higher log level, but this requires you to reinitialize the logger with any customiziation you made to it for your application (i.e. output device, format, etc.). With QuietLogger, you can just re-use the logger that has already been defined:
ActionCable.server.config.logger = QuietLogger.new(Rails.logger, level: :warn)
Now all the log messages will still go to the same logger, but with only
WARN and higher messages from ActionCable.
verbose_logger = Logger.new(STDOUT, level: :debug)
quiet_logger = QuietLogger.new(verbose_logger, level: :warn)
verbose_logger.debug("hello") # This is logged
quiet_logger.debug("hello again") # This is not logged since the level must be "warn" or higher
quiet_logger.warn("one more time") # This is logged since the level is warn
even_quieter_logger = QuietLogger.new(verbose_logger, level: :error)
Add this line to your application's Gemfile:
And then execute:
Or install it yourself as:
$ gem install quiet_logger
Open a pull request on GitHub.
Please use the standardrb syntax and lint your code with
standardrb --fix before submitting.
The gem is available as open source under the terms of the MIT License.