2012-02-28 106 views
1

我正在使用MongoMapper插件運行Rails。在開發模式我的控制檯充斥着每個MongoDB的查詢消息,像這樣的:MongoMapper控制檯消息

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

這一發現查詢的罰款。當它將5mb的更新查詢轉儲到我的控制檯時,它開始令我煩惱。任何人都知道如何關閉這些?我的Google-fu不夠強大,無法找到答案。

回答

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

但請注意,這表示默認爲「無」,所以我不知道爲什麼你的實例記錄任何東西,沒有你明確地設置它。

+0

由於奔!我實際上並沒有在配置文件中的任何地方連接到Mongo,我只是有一個'mongo.yml'文件,它自動完成剩下的工作。但是現在我在'config/initializers'中添加了一個包含該連接字符串和':logger => nil'的文件。 – Dave 2012-02-28 10:36:04

+0

編輯:讀取源代碼和'logger:false'看起來不是支持的mongo.yml選項 – 2012-02-28 18:54:37

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