Continuous Integration Ruby Style Guide

QuietLogger

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.

Usage

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)

Installation

Add this line to your application's Gemfile:

gem "quiet_logger"

And then execute:

$ bundle

Or install it yourself as:

$ gem install quiet_logger

Contributing

Open a pull request on GitHub.

Please use the standardrb syntax and lint your code with standardrb --fix before submitting.

License

The gem is available as open source under the terms of the MIT License.