ruby – 在将字符串写入日志文件之前从字符串中删除颜色装饰
发布时间:2020-12-16 19:28:14 所属栏目:百科 来源:网络整理
导读:我像这样使用 ruby记录器: $logger = Logger.new MultiIO.new($stdout,log_file) MultiIO是我从this answer获得的一个类.这个很好,大多数,但我使用’有色’rubygem在终端上给彩色输出.不幸的是,这也会在日志文件中结束,因为ANSI转义看起来像[32mPASS [0m或
我像这样使用
ruby记录器:
$logger = Logger.new MultiIO.new($stdout,log_file) MultiIO是我从this answer获得的一个类.这个很好,大多数,但我使用’有色’rubygem在终端上给彩色输出.不幸的是,这也会在日志文件中结束,因为ANSI转义看起来像[32mPASS [0m或一些类似的不可打印的字符垃圾. 清除日志文件字符串同时保持tty字符串颜色的最佳方法是什么?我不介意猴子修补Logger或MultiIO,但我绝对不希望对日志文件和屏幕进行两次不同的调用. 解决方法
这是我目前的解决方案
class ColourBlind def initialize(*targets) @targets = targets end def write(*args) @targets.each {|t| t.write(*args.map {|x| x.gsub(/e[(d+)m/,'')}.compact)} end def close @targets.each(&:close) end end 然后: $logger = Logger.new MultiIO.new($stdout,ColourBlind.new(log_file)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |