为什么Rails会更改记录器的颜色转义序列?

时间:2014-09-19 13:43:56

标签: ruby-on-rails ruby logging colors

我有一个带记录器的简单ruby脚本,我为该记录器设置了一个格式化程序以提供彩色输出:

require 'colorize'
require 'mono_logger'

logger = MonoLogger.new(target_file)
logger.formatter = proc do |severity, datetime, progname, msg|
  meta = "#{severity.to_s[0].red} #{datetime.strftime('%y-%m-%d %H:%M:%S.%6N').white}"
  "#{meta}  #{msg}\n"
end

效果很好,所有logger.info次调用都使用正确的颜色转义序列保存,并在使用tail查看文件时显示为黑色/红色。

在该ruby脚本中,我加载了rails环境,以便访问应用程序模型等,如下所示:

require File.expand_path('../../../../config/environment',  __FILE__)

在该行之后,每个日志调用都不会保存正确的颜色转义序列。似乎rails会做一些替换或类似的东西。

require

之前
\033[0;31;49mI\033[0m [0;37;49m14-09-19 15:38:36.472544\033[0m  Starting boot process
\033[0;31;49mI\033[0m [0;37;49m14-09-19 15:38:36.472788\033[0m  Loading rails environment

require之后:

\033[1;31mI\033[0m [1;37m14-09-19 15:38:39.949944\033[0m  Using config config/config.rb
\033[1;31mD\033[0m [1;37m14-09-19 15:38:47.105813\033[0m  Setting up clockwork
\033[1;31mI\033[0m [1;37m14-09-19 15:38:47.805399\033[0m  Setting up EventMachine

任何想法如何解决?

1 个答案:

答案 0 :(得分:0)

似乎Rails拥有自己的.green.blue,... String的方法。如果您使用.colorize(:green)代替.green,一切都像魅力一样。