如何在控制台中禁用 MongoDB 日志消息?

Posted

技术标签:

【中文标题】如何在控制台中禁用 MongoDB 日志消息?【英文标题】:How can I disable MongoDB log messages in console? 【发布时间】:2015-07-29 07:15:18 【问题描述】:

我有这个小测试脚本:

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

有什么想法吗?我不知道我还能尝试什么!

【问题讨论】:

对于未来的访问者,如果您想要类似于活动记录的漂亮彩色日志记录,您可能需要查看the mongo beautiful logger gem 【参考方案1】:

此日志记录来自 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 

对于application.rb中的Rails + Mongoid

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

【讨论】:

这并没有禁止在我的控制台中记录查询。添加 Mongoid.logger.level = Logger::INFO 就可以了。 这在 Mongoid 6 上对我不起作用。当我将它放入 application.rb Mongoid::Config.logger = Logger.new("#Rails.root/日志/mongo.log") 对于任何来这里寻找 Rails 和 Mongoid 答案的人,也可以在 mongoid.yml 中设置:docs.mongodb.com/mongoid/master/tutorials/mongoid-installation .logger = ... 在 Rails 5.1 (mongo 2.5, mongoid 6.2) 中不起作用,但 config.mongoid.logger = Logger.new(Rails.root + '/tmp/mongo.log', :warn) 在来自 docs.mongodb.com/mongoid/master/tutorials/mongoid-rails 的 development.rb 中终于清理了我的控制台!跨度> 注意 - 仅在 Rails 中设置日志级别(不更改目标):config.mongoid.logger.level = Logger::INFO【参考方案2】:

禁用 Ruby Mongo Driver(mongoid) 的调试输出 我们可以将它添加为特定的环境文件

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

【讨论】:

以上是关于如何在控制台中禁用 MongoDB 日志消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby on Rails 3.1 中禁用资产管道(链轮)消息的日志记录?

加载 Doctrine 固定装置时如何在控制台中禁用查询日志记录?

如何测试没有数据写入 NSPipe

如何禁用 websocket 写入调试消息

在控制台中禁用 HSQLDB 服务器日志

如何在从詹金斯运行 RobotFramework 时禁用 [WARN] 消息以记录到控制台