MongoMapper控制台消息

时间:2012-02-28 07:52:34

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

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

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

查找查询没问题。当它向我的控制台转储5mb的更新查询时,它开始让我烦恼。有谁知道怎么关掉这些?我的Google-fu不够强大,无法找到答案。

2 个答案:

答案 0 :(得分: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”,因此我不确定为什么您的实例在没有明确设置的情况下记录任何内容。

答案 1 :(得分:1)

已打开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