mongodb MongoMapper Console Messages

wwwo4jvm  于 2022-11-03  发布在  Go
关注(0)|答案(3)|浏览(145)

我正在运行带有MongoMapper插件的Rails。在开发模式下,我的控制台会被每个MongoDB查询的消息淹没,如下所示:

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

查找查询是好的。它是当它转储5mb的更新查询到我的控制台,它开始烦我。有人知道如何关闭这些吗?我的谷歌福不够强大,找到一个答案。

0g0grzrc

0g0grzrc1#

当你连接到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”,所以我不确定为什么您的示例在没有显式设置的情况下记录任何东西。

9rygscc1

9rygscc12#

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
nmpmafwu

nmpmafwu3#

您可以编写自己的初始化程序:

module MyApp
  class Railtie < Rails::Railtie
    initializer "mongo_mapper.initialize_database" do
      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 => Logger.new(Rails.root.join('log', 'mongo.log')))
      end
    end
  end
end

相关问题