我有一个带记录器的简单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
任何想法如何解决?
答案 0 :(得分:0)
似乎Rails拥有自己的.green
,.blue
,... String的方法。如果您使用.colorize(:green)
代替.green
,一切都像魅力一样。