我安装了Ramaze(在Windows XP上),它建议我也安装win32console,以便在运行时获得彩色日志输出。
然而,在这样做之后,我得到转义码而不是颜色,如下所示:
W [2009-04-29 09:02:55 $5064] WARN | : ←[33mNo explicit root folder found, assuming it is C:/Projects/Ruby/Ramaze/Conferences←[0m
D [2009-04-29 09:02:55 $5064] DEBUG | : ←[34mUsing webrick←[0m
I [2009-04-29 09:02:55 $5064] INFO | : ←[37mWEBrick 1.3.1←[0m
I [2009-04-29 09:02:55 $5064] INFO | : ←[37mruby 1.8.6 (2008-08-11) [i386-mswin32]←[0m
D [2009-04-29 09:02:55 $5064] DEBUG | : ←[34mTCPServer.new(0.0.0.0, 7000)←[0m
D [2009-04-29 09:02:55 $5064] DEBUG | : ←[34mRack::Handler::WEBrick is mounted on /.←[0m
I [2009-04-29 09:02:55 $5064] INFO | : ←[37mWEBrick::HTTPServer#start: pid=5064 port=7000←[0m
即使在Ruby / Ramaze / win32console
的干净安装中也会发生这种情况我的设置是:
顺便提一下,以下测试程序似乎有效,所以我想知道它是否是我机器上的Ramaze / win32console问题。
#!/usr/bin/ruby
require 'rubygems'
require 'win32console'
[0, 1, 4, 5, 7].each do |attr|
puts '----------------------------------------------------------------'
puts "ESC[#{attr};Foreground;Background"
30.upto(37) do |fg|
40.upto(47) do |bg|
print "\033[#{attr};#{fg};#{bg}m #{fg};#{bg} "
end
puts "\033[0m"
end
end
答案 0 :(得分:1)
也许这不是您正在寻找的答案,但我在Windows上使用MSYS/MinGW并且它的bash在没有win32console gem的情况下正确显示颜色。
答案 1 :(得分:1)
尝试
require 'rubygems'
require 'win32console'
include Win32::Console::ANSI
include Term::ANSIColor
答案 2 :(得分:0)
我认为这是由于您的代码与Ramaze(或Innate)中的代码之间的格式字符串不同造成的。
"\e[#{COLOR_CODE[LEVEL_COLOR[severity]]}m#{string}\e[0m"
扩展为(对于红色,“Hello”是字符串):
"\e[31mHello\e[0m"
在Ruby中, \e
被转换为\033
,因此不应该给我们带来麻烦:
当然等同于\033
"\033" == "\e" # => true
主要区别在于Ramaze没有指定背景颜色,因为如果它与终端的默认背景形成鲜明对比,可能会导致输出难看。但是,如果你的背景是蓝色,红色,白色或者Ramaze用于记录的任何其他前景颜色,它可能完全不可读,我想我们应该明确定义背景,并希望这也将修复你的窗户问题。
答案 3 :(得分:0)
尝试在app.rb中添加此内容
require "win32console"
require "Win32/Console/ANSI"
答案 4 :(得分:0)
win32console。
这是因为Ramaze及其日志记录机制在win32console替换它们之前保持对stdout和stderr的引用。
答案 5 :(得分:0)
我刚刚尝试了How to load ANSI escape codes or get coloured file listing in WinXP cmd shell中的建议,这很有效。
基本上,我抓住了ANSICon,然后跑了:
从提取到的x86子文件夹ansicon.exe -I(那是首都'我')
。这将ANSI颜色代码DLL安装为之后打开的所有cmd.exe窗口的挂钩。哟,看哪 - cmd.exe中的颜色