【问题标题】:How do I tell ActiveRecord not to log any control chars如何告诉 ActiveRecord 不要记录任何控制字符
【发布时间】:2009-08-17 03:08:58
【问题描述】:

有没有办法告诉活动记录在记录内容时不要记录 ansi 颜色代码?

例如。我不希望在我的日志中出现这种情况。

[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)

我不是在寻找事后清理混乱的解决方案。

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      将此添加到适当的环境文件中(在我的例子中是 development.rb)

      config.active_record.colorize_logging = false 
      

      【讨论】:

      • 这个答案对 rails 有效
      【解决方案3】:

      我在我的 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
      

      【讨论】:

        猜你喜欢
        • 2013-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-28
        • 1970-01-01
        • 2011-07-03
        • 2022-12-03
        • 2013-12-28
        相关资源
        最近更新 更多