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



我有一个带有记录器的简单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:之前

33[0;31;49mI33[0m [0;37;49m14-09-19 15:38:36.47254433[0m  Starting boot process
33[0;31;49mI33[0m [0;37;49m14-09-19 15:38:36.47278833[0m  Loading rails environment

require:之后

33[1;31mI33[0m [1;37m14-09-19 15:38:39.94994433[0m  Using config config/config.rb
33[1;31mD33[0m [1;37m14-09-19 15:38:47.10581333[0m  Setting up clockwork
33[1;31mI33[0m [1;37m14-09-19 15:38:47.80539933[0m  Setting up EventMachine

有什么解决办法吗?

看起来Rails有自己的.green.blue。。。方法。如果你用.colorize(:green)而不是.green,一切都像一个符咒。

最新更新