Ruby on Rails - How to print log messages in color Ruby on Rails - How to print log messages in color ruby ruby

Ruby on Rails - How to print log messages in color


Basically what you want to do is embed ANSI escape sequences for color into your debug strings, just like you would in a regular Ruby program. There are several ways to go about this:

  1. Use the rainbow gem, which allows you to do this:

    require 'rainbow'Rails.logger.debug(Rainbow("This message is Green").green)

    or require the mixin to add methods directly to the string class:

    Updated March 2021: The Rainbow Gem API has changed. Use this now:

    require 'rainbow/refinement'using RainbowRails.logger.debug("This is Green - ".green + "This is Blue".blue)

    Previous Version (for posterity):

    require 'rainbow/ext/string'Rails.logger.debug("This is Green - ".green + "This is Blue".blue)

    End Update

    The Rainbow gem will automatically add the beginning and ending escape sequences to the string.

  2. Use the colorize gem, which does the same thing as the rainbow mixin to the String class:

    require 'colorize'Rails.logger.debug("This is Green - ".green + "This is Blue".blue)

  3. Put the escape sequences in yourself, using something like this:

    Rails.logger.debug("\033[32mThis message is Green\033[0m")

  4. Write your own extension to the String class. See this answer or this answer for an example.

For more ideas, see How can I use Ruby to colorize the text output to a terminal?


Since Rails 5, it is possible to use the internal support for coloring sql logs via ActiveSupport::LogSubscriber:

logger.debug ActiveSupport::LogSubscriber.new.send(:color, "message", :red)