2015-05-17 5 views
36

Ich habe diese kleine Testskript:Wie kann ich MongoDB Log-Nachrichten in der Konsole deaktivieren?

require 'mongo' 

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

Jahr Dies ist die Ausgabe der Konsole:

$ 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 

ich die Log-Meldungen zu deaktivieren, ich habe nicht ein schmutziges STDOUT will. Ich habe keine Möglichkeit, dies in den Ruby-Treiber gefunden, und ich habe auch zu bearbeiten /etc/mongod.conf mit diesen Richtlinien versucht (aber es hat es nicht fix):

verbose = false 
diaglog = 0 

Jede Idee? Ich weiß nicht, was ich noch versuchen kann!

Antwort

81

Diese Protokollierung stammt vom Ruby Mongo-Treiber. Die Standardprotokollierungsstufe scheint Logger::DEBUG zu sein. Ändern Sie ihn auf etwas höher, um die Debug-Ausgabe zu deaktivieren:

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

Um den Treiber-Protokoll in eine Log-Datei zu machen statt:

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

Beachten Sie, dass, wenn Sie mit dem Mongoid ODM, dann sind Sie möglicherweise möchten die Protokollierung anpassen es zu:

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

Für Rails + Mongoid in application.rb:

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

Danke hinzufügen! Vielen Dank! Vielen Dank! Ich habe das in der Treiberdokumentation nicht gefunden, du hast mir noch ein paar Stunden der Verzweiflung erspart. – raulmarcosl

+1

Das hat nicht deaktiviert, dass Abfragen in meiner Konsole protokolliert werden. Mongoid.logger.level = Logger :: INFO hat den Trick gemacht. – Ekkstein

+0

Das funktionierte nicht für mich auf Mongoid 6. Das ist, was funktionierte, wenn ich es in application.rb setzen Mongoid :: Config.logger = Logger.new ("# {Rails.root} /log/mongo.log ") – Prabhakar

1

Um die Debug-Ausgabe für Ruby Mongo Driver (mongoid) deaktivieren können wir es spezifische Umgebungsdatei als

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

Verwandte Themen