我使用MongoMapper插件运行Rails。在开发模式下,我的控制台充满了每个MongoDB查询的消息,如:
MONGODB (0ms) mydb['templates'].find({:_type=>{"$in"=>["DS::QPM::Template"]},
:_id=>BSON::ObjectId('4e9f815f10b6110e9b000001')}).limit(-1)
查找查询没问题。当它向我的控制台转储5mb的更新查询时,它开始让我烦恼。有谁知道怎么关掉这些?我的Google-fu不够强大,无法找到答案。
答案 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