web-dev-qa-db-ja.com

コンソールでMongoDBログメッセージを無効にするにはどうすればよいですか?

この小さなテストスクリプトがあります。

require 'mongo'

mongo_client = Mongo::Client.new(['127.0.0.1:27017'], :database => 'test')
mongo_client[:collection].insert_one({a: 1})

これはコンソール出力です:

$ Ruby test.rb
D, [2015-05-17T21:12:05.504986 #25257] DEBUG -- : MONGODB | Adding 127.0.0.1:27017 to the cluster. | runtime: 0.0212ms
D, [2015-05-17T21:12:05.531238 #25257] DEBUG -- : MONGODB | COMMAND | namespace=admin.$cmd selector={:ismaster=>1} flags=[] limit=-1 skip=0 project=nil | runtime: 24.5481ms
D, [2015-05-17T21:12:05.554532 #25257] DEBUG -- : MONGODB | COMMAND | namespace=test.$cmd selector={:insert=>"collection", :documents=>[{:a=>1, :_id=><BSON::ObjectId:0x21935660 data=5558e80553657262a9000000>}], :writeConcern=>{:w=>1}, :ordered=>true} flags=[] limit=-1 skip=0 project=nil | runtime: 21.1718ms

これらのログメッセージを無効にしたいのですが、汚れたSTDOUTは必要ありません。 Rubyドライバーでこのオプションが見つかりませんでした。また、/etc/mongod.confこれらのディレクティブを使用します(ただし、修正されませんでした)。

verbose = false
diaglog = 0

何か案が?他に何ができるかわかりません!

43
raulmarcosl

このロギングは、Ruby Mongoドライバーからのものです。デフォルトのロギングレベルはLogger::DEBUG。より高い値に変更して、デバッグ出力を無効にします。

Mongo::Logger.logger.level = Logger::FATAL

代わりにドライバーをログファイルに記録するには:

Mongo::Logger.logger       = Logger.new('mongo.log')
Mongo::Logger.logger.level = Logger::INFO

Mongoid ODMを使用している場合は、ロギングを調整することもできます。

Mongoid.logger       = Logger.new('mongoid.log')
Mongoid.logger.level = Logger::INFO 

ForRails + Mongoidin application.rb

config.mongoid.logger = Logger.new(Rails.root + '/log/mongoid.log', :warn)

# ...or change the logging level without a new file destination
config.mongoid.logger.level = Logger::INFO
93
Casper

Ruby Mongo Driver(mongoid))のデバッグ出力を無効にするには、特定の環境ファイルを次のように追加します。

config.mongoid.logger.level = Logger::INFO

1
Pooja Mane