我很惊讶我已经无法在SO上找到这个了。
我希望能够在我的日志输出中为控制台输入特定的字符串段。所以有点像这样:
"This part of the message in Green: This part in Blue"
可能是这样写的:
Rails.logger.debug("This part of the message in Green: ".green + "This part in Blue".blue)
答案 0 :(得分:33)
基本上你要做的是将ANSI转义序列颜色嵌入到调试字符串中,就像在常规Ruby程序中一样。有几种方法可以解决这个问题:
使用rainbow
gem,可以执行此操作:
require 'rainbow'
Rails.logger.debug(Rainbow("This message is Green").green)
或require
mixin将方法直接添加到字符串类:
require 'rainbow/ext/string'
Rails.logger.debug("This is Green - ".green + "This is Blue".blue)
Rainbow gem会自动将开始和结束转义序列添加到字符串中。
使用colorize
gem,它与Rainbow mixin在String类中的作用相同:
require 'colorize'
Rails.logger.debug("This is Green - ".green + "This is Blue".blue)
使用以下内容将转义序列放入您自己:
Rails.logger.debug("\033[32mThis message is Green\033[0m")
将自己的扩展名写入String类。有关示例,请参阅this answer或this answer。
有关更多提示,请参阅Colorized Ruby output
答案 1 :(得分:4)
自Rails 5起,可以通过ActiveSupport::LogSubscriber
使用内部支持为sql日志着色:
logger.debug ActiveSupport::LogSubscriber.new.send(:color, "message", :red)