这个问题既简单又基本。如何将所有查询记录在mongodb中的“尾部”日志文件中?
我试过:
设置概要级别 设置启动慢ms参数 使用-vv选项Mongod
/var/log/mongodb/mongodb.log一直显示当前活动连接的数量…
这个问题既简单又基本。如何将所有查询记录在mongodb中的“尾部”日志文件中?
我试过:
设置概要级别 设置启动慢ms参数 使用-vv选项Mongod
/var/log/mongodb/mongodb.log一直显示当前活动连接的数量…
当前回答
我写了一个脚本,将打印出系统。当查询进来时,配置文件实时登录。如其他回答中所述,您需要首先启用日志记录。我需要这个,因为我正在使用Linux的Windows子系统,对于它,tail仍然不起作用。
https://github.com/dtruel/mongo-live-logger
其他回答
我建议你看看mongosniff。这个工具可以做任何你想做的事情,甚至更多。特别是它可以帮助诊断大规模mongo系统的问题,以及查询是如何路由的以及它们来自哪里,因为它是通过监听您的网络接口进行所有与mongo相关的通信来工作的。
http://docs.mongodb.org/v2.2/reference/mongosniff/
因为它的谷歌第一个答案… 对于版本3
$ mongo
MongoDB shell version: 3.0.2
connecting to: test
> use myDb
switched to db
> db.setLogLevel(1)
http://docs.mongodb.org/manual/reference/method/db.setLogLevel/
db.adminCommand( { getLog: "*" } )
Then
db.adminCommand( { getLog : "global" } )
将profilinglevel设置为2是记录所有查询的另一个选项。
我最终通过像这样开始mongod来解决这个问题(锤击和丑陋,是的……但适用于开发环境):
mongod --profile=1 --slowms=1 &
这将启用分析,并将“慢查询”的阈值设置为1毫秒,导致所有查询都被记录为文件的“慢查询”:
/var/log/mongodb/mongodb.log
现在我得到连续的日志输出使用命令:
tail -f /var/log/mongodb/mongodb.log
日志示例:
Mon Mar 4 15:02:55 [conn1] query dendro.quads query: { graph: "u:http://example.org/people" } ntoreturn:0 ntoskip:0 nscanned:6 keyUpdates:0 locks(micros) r:73163 nreturned:6 reslen:9884 88ms