【问题标题】:MongoMapper Console MessagesMongoMapper 控制台消息
【发布时间】:2012-02-28 07:52:33
【问题描述】:

我正在使用 MongoMapper 插件运行 Rails。在开发模式下,我的控制台充斥着每个 MongoDB 查询的消息,如下所示:

MONGODB (0ms) mydb['templates'].find({:_type=>{"$in"=>["DS::QPM::Template"]},
 :_id=>BSON::ObjectId('4e9f815f10b6110e9b000001')}).limit(-1)

查找查询很好。当它将 5mb 的更新查询转储到我的控制台时,它开始让我烦恼。有谁知道如何关闭这些?我的 Google-fu 不够强大,无法找到答案。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 mongodb mongomapper


    【解决方案1】:

    当您连接到 MongoMapper 时,只需添加一个 :logger 选项。像这样的:

    MongoMapper.connection = Mongo::Connection.new('localhost', 27017, :logger => Rails.logger)
    

    这将使它记录到常规的 Rails 日志中。有关这方面的文档,请参见此处:http://api.mongodb.org/ruby/current/Mongo/Connection.html#constructor_details

    请注意,虽然这表示默认值为“nil”,所以我不确定为什么您的实例在没有明确设置的情况下会记录任何内容。

    【讨论】:

    • 谢谢本!我实际上并没有在我的配置文件中的任何地方连接到 Mongo,我只有一个 mongo.yml 文件,它会自动完成其余的工作。但是我现在已经在config/initializers 中添加了一个带有该连接字符串和:logger => nil 的文件。
    • 编辑:阅读源代码,logger: false 似乎不是受支持的 mongo.yml 选项
    【解决方案2】:

    已打开 MongoMapper 的拉取请求 (https://github.com/jnunemaker/mongomapper/pull/413),它允许从 mongo.yml 以每个环境为基础配置记录器。

    理想情况下,这将成为官方分发的一部分。如果没有,该补丁可能对您有用:

    diff --git a/lib/mongo_mapper/railtie.rb b/lib/mongo_mapper/railtie.rb
    index f8699c9..9509761 100644
    --- a/lib/mongo_mapper/railtie.rb
    +++ b/lib/mongo_mapper/railtie.rb
    @@ -25,7 +25,7 @@ class Railtie < Rails::Railtie
           config_file = Rails.root.join('config/mongo.yml')
           if config_file.file?
             config = YAML.load(ERB.new(config_file.read).result)
    -        MongoMapper.setup(config, Rails.env, :logger => Rails.logger)
    +        MongoMapper.setup(config, Rails.env, :logger => eval(config[Rails.env]['logger']))
           end
         end
    

    使用上述补丁的 (config/mongo.yml) 示例:

    defaults: &defaults
      hosts:
      - - 'host1:27017'
      - - 'host2:27017'
      - - 'host3:27017'
    
    development:
      <<: *defaults
      database: dev
      logger: nil
    
    test:
      <<: *defaults
      database: test
    
    production:
      <<: *defaults
      database: prod
      logger: Rails.logger
    

    或者:

    defaults: &defaults
      hosts:
      - - 'host1:27017'
      - - 'host2:27017'
      - - 'host3:27017'
      logger: Rails.logger
    
    development:
      <<: *defaults
      database: dev
    
    test:
      <<: *defaults
      database: test
    
    production:
      <<: *defaults
      database: prod
    

    【讨论】:

      猜你喜欢
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多