2015-05-17 17 views
36

ho questo piccolo script di test:Come posso disabilitare i messaggi di registro MongoDB nella console?

require 'mongo' 

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

Un questo è l'output della console:

$ 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 

Voglio disabilitare questi messaggi di log, non voglio uno STDOUT sporca. Non ho trovato alcuna opzione per questo nel driver rubino, e anche io ho provato a modificare /etc/mongod.conf a queste direttive (ma non ha risolvere il problema):

verbose = false 
diaglog = 0 

Qualche idea? Non so cos'altro posso provare!

risposta

81

Questa registrazione proviene dal driver Ruby Mongo. Il livello di registrazione predefinito sembra essere Logger::DEBUG. Cambiarlo in qualcosa di più alto per disabilitare l'output di debug:

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

Per visualizzare il registro di conducente di un file di log, invece:

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

Si noti che se si sta utilizzando il Mongoid ODM, allora si possibile regolare la registrazione anche lì:

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

per Rails + Mongoid in application.rb:

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

Grazie! Grazie! Grazie! Non l'ho trovato nella documentazione del conducente, mi hai salvato qualche ora in più di disperazione. – raulmarcosl

+1

Questo non ha disabilitato le query di accesso nella mia console. Aggiungendo Mongoid.logger.level = Logger :: INFO ha fatto il trucco. – Ekkstein

+0

Che non ha funzionato per me su Mongoid 6. Questo è ciò che ha funzionato quando l'ho messo in application.rb Mongoid :: Config.logger = Logger.new ("# {Rails.root} /log/mongo.log ") – Prabhakar

1

Per disattivare l'output di debug per Ruby Mongo Driver (mongoid) possiamo aggiungere che il file ambiente specifico come

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