如何告诉ActiveRecord不要记录任何控制字符

时间:2009-08-17 03:08:58

标签: ruby-on-rails activerecord

有没有办法告诉活动记录在记录日志时不记录ansi颜色代码?

EG。我不希望这在我的日志中。

[4;36;1mSQL (0.1ms)[0m   [0;1mSELECT count(*) AS count_all FROM `users` WHERE (`user`.id = 133) [0m 

相反,我想要这个:

SQL (0.1ms) SELECT count(*) AS count_all FROM `users` WHERE (`user`.id = 133)

我不是在寻找一个解决方案,其中包括事后清理混乱。

3 个答案:

答案 0 :(得分:10)

回答Rails 3:

config.colorize_logging = false

请参阅http://guides.rubyonrails.org/3_0_release_notes.html

  

ActiveRecord :: Base.colorize_logging和   不赞成使用config.active_record.colorize_logging   Rails :: LogSubscriber.colorize_logging或config.colorize_logging

答案 1 :(得分:8)

将此添加到相应的环境文件(在我的案例中为development.rb)

config.active_record.colorize_logging = false 

答案 2 :(得分:4)

我在jRuby脚本中使用此方法。 禁用着色的部分是

ActiveSupport::LogSubscriber.colorize_logging = false

get_jar_path是另一种方法,如果脚本在JAR中,则返回正确的路径

def activate_logger scriptname
  # delete logs after a month
  $log = Logger.new( "#{get_jar_path}/logs/#{scriptname}_#{Time.now.strftime("%Y%m%d")}.txt", 'monthly' )
  # $log = Logger.new($stdout) 
  ActiveRecord::Base.logger = $log
  ActiveRecord::Base.logger.level = Logger.const_get($debuglevel)
  ActiveSupport::LogSubscriber.colorize_logging = false
  $errors, $verwerkt = 0, 0
  $log.info "start #{__FILE__}"
end