2014-08-29 54 views
11

我很惊讶,我无法在SO上找到它。Ruby on Rails - 如何以彩色打印日志消息

我希望能够在我的日志输出中输入控制台的特定字符串段。所以somethng这样的:

"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) 

回答

27

基本上你想要做的就是嵌入彩色ANSI转义序列到您的调试字符串,就像你在一个普通的Ruby会是什么程序。有几种方法去这个问题:

  1. 使用rainbow宝石,它允许你这样做:

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

    require的混入直接方法添加到字符串类:

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

    彩虹宝石会自动添加开始和结束字符串的转义序列。

  2. 使用colorize宝石,其做同样的事情作为彩虹混入到String类:

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

  3. 把转义序列中的自己,用这样的事情:

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

  4. 将您自己的扩展写入String类。举例来说,参见this answerthis answer

更多的想法,看到Colorized Ruby output

+1

真棒!谢谢! – 2015-05-19 22:12:47

+0

非常好!谢谢! – Neil 2016-05-15 22:58:45

+2

使用'rainbow'宝石,'colorize'使用疯狂不兼容的许可证。 – Barry 2016-11-01 09:05:36