我有一个小测试脚本:

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

我想禁用那些日志(log)消息,我不想要肮脏的标准输出.我在ruby驱动程序中找不到任何选项,我还try 用这些指令编辑/etc/mongod.conf(但没有修复):

verbose = false
diaglog = 0

知道吗?我不知道还能try 什么!

推荐答案

这个日志(log)来自Ruby Mongo驱动程序.默认的日志(log)记录级别似乎是Logger::DEBUG.将其更改为更高的值以禁用调试输出:

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

要将驱动程序记录到日志(log)文件,请执行以下操作:

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

请注意,如果您使用的是Mongoid ODM,那么您可能也需要调整日志(log)记录:

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

对于application.rb中的100:

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

Ruby相关问答推荐

Python 正则表达式是否等同于 Ruby 的原子分组?

RSpec 模拟对象示例

Ruby 将字符串转换为方法名

如何从 Ruby 中的线程返回值?

用于 ruby​​ gems 的新 10.9 OSX 的命令行工具?

使用 Bundler 时,为什么要关心 RVM 的 Gemset 功能?

RSpec 是否有可能期望在两个表中发生变化?

截断、事务和删除数据库策略的区别

Coffeescript 中等效的 Ruby .times

Ruby 中是否有像 C 中一样的主要方法?

在 ruby​​ 中访问嵌套哈希的元素

如何用 Ruby 覆盖 shell 中的打印行?

从 Ruby 程序中创建 beep声的最简单方法是什么?

Vim 用 ruby​​ 语法高亮显示很慢

Ruby数组限制方法

了解 ruby​​-prof 输出

Ruby - Array#<< 和 Array#push 之间的区别

解析带有标题字段的 CSV 文件作为每行的属性

如何将 270921sec 转换为天 + 小时 + 分钟 + 秒? (Ruby)

如何在Ruby中将字符串拆分为仅具有给定字符的两部分?