【问题标题】:Undefined method `tagged' for Formatter error after Rails 4 upgradeRails 4升级后格式化程序错误的未定义方法“标记”
【发布时间】:2013-08-13 03:24:48
【问题描述】:

我已按照 Ruby Screencast 指南从 Rails 3.2 升级到 Rails 4。我的测试正在运行并且服务器启动,但我在发送请求时收到错误:

ERROR NoMethodError: undefined method `tagged' for #<Formatter:0x000000057f5dc8>

/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/activesupport-4.0.0/lib/active_support/tagged_logging.rb:67:in `tagged'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/railties-4.0.0/lib/rails/rack/logger.rb:21:in `call'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/quiet_assets-1.0.2/lib/quiet_assets.rb:18:in `call_with_quiet_assets'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/actionpack-4.0.0/lib/action_dispatch/middleware/request_id.rb:21:in `call'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/methodoverride.rb:21:in `call'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/runtime.rb:17:in `call'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/activesupport-4.0.0/lib/active_support/cache/strategy/local_cache.rb:83:in `call'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/actionpack-4.0.0/lib/action_dispatch/middleware/static.rb:64:in `call'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/railties-4.0.0/lib/rails/engine.rb:511:in `call'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/railties-4.0.0/lib/rails/application.rb:97:in `call'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/lock.rb:17:in `call'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/content_length.rb:14:in `call'
/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/handler/webrick.rb:60:in `service'
/home/mahoni/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service'
/home/mahoni/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run'
/home/mahoni/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'

我已经查看了代码,但这对我来说没有意义。它调用logger.tagged。变量logger 后面的对象不是记录器,而是Formatter 对象。这很奇怪。

知道是什么原因造成的吗?到目前为止我:

  • 删除了我的Gemfile.lock
  • gem update rails
  • bundle install
  • bundle update

在这个和不同的命令中。我该如何处理?

【问题讨论】:

    标签: ruby ruby-on-rails-3.2 ruby-on-rails-4 activeresource


    【解决方案1】:

    我也有同样的错误,通过重新初始化记录器来解决它。

    在 config/initializers 上添加了一个新文件,称为 log_formatting.rb

    使用此代码:

    Rails.logger = ActiveSupport::Logger.new "log/mylog.log"
    Rails.logger.formatter = proc{|severity,datetime,progname,msg|
        "[#{datetime.strftime("%Y-%m-%d %H:%M:%S")}] [#{severity}]: #{msg}\n"
    }
    

    【讨论】:

      【解决方案2】:

      您使用的是客户记录器吗?

      签入config/environments/development.rb。这就是通常分配记录器的位置。

      另外,查看 config/initializers 以获取与日志记录相关的猴子补丁。

      我使用的是 Chris Powell 的记录器补丁,它导致了一个非常相似的错误。

      如果您正在使用该补丁,那么 Rails 4 有一个更新的补丁: http://cbpowell.wordpress.com/2013/08/09/beautiful-logging-for-ruby-on-rails-4/

      【讨论】:

      • 很好的答案。我们在 config/initializers 中的自定义记录器也遇到了类似的问题。
      • 谢谢!很高兴它有帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-30
      • 2015-10-17
      • 2014-07-15
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多