这个问题既简单又基本。如何将所有查询记录在mongodb中的“尾部”日志文件中?
我试过:
设置概要级别 设置启动慢ms参数 使用-vv选项Mongod
/var/log/mongodb/mongodb.log一直显示当前活动连接的数量…
这个问题既简单又基本。如何将所有查询记录在mongodb中的“尾部”日志文件中?
我试过:
设置概要级别 设置启动慢ms参数 使用-vv选项Mongod
/var/log/mongodb/mongodb.log一直显示当前活动连接的数量…
当前回答
我做了一个命令行工具来激活分析器活动,并以“尾部”的方式查看日志——>“mongotail”:
$ mongotail MYDATABASE
2020-02-24 19:17:01.194 QUERY [Company] : {"_id": ObjectId("548b164144ae122dc430376b")}. 1 returned.
2020-02-24 19:17:01.195 QUERY [User] : {"_id": ObjectId("549048806b5d3db78cf6f654")}. 1 returned.
2020-02-24 19:17:01.196 UPDATE [Activation] : {"_id": "AB524"}, {"_id": "AB524", "code": "f2cbad0c"}. 1 updated.
2020-02-24 19:17:10.729 COUNT [User] : {"active": {"$exists": true}, "firstName": {"$regex": "mac"}}
...
但更有趣的功能(也像tail一样)是使用-f选项“实时”查看更改,偶尔使用grep过滤结果以查找特定操作。
参见文档和安装说明:https://github.com/mrsarm/mongotail
(也可以从Docker运行,特别是如果你想从Windows https://hub.docker.com/r/mrsarm/mongotail执行它)
其他回答
我做了一个命令行工具来激活分析器活动,并以“尾部”的方式查看日志——>“mongotail”:
$ mongotail MYDATABASE
2020-02-24 19:17:01.194 QUERY [Company] : {"_id": ObjectId("548b164144ae122dc430376b")}. 1 returned.
2020-02-24 19:17:01.195 QUERY [User] : {"_id": ObjectId("549048806b5d3db78cf6f654")}. 1 returned.
2020-02-24 19:17:01.196 UPDATE [Activation] : {"_id": "AB524"}, {"_id": "AB524", "code": "f2cbad0c"}. 1 updated.
2020-02-24 19:17:10.729 COUNT [User] : {"active": {"$exists": true}, "firstName": {"$regex": "mac"}}
...
但更有趣的功能(也像tail一样)是使用-f选项“实时”查看更改,偶尔使用grep过滤结果以查找特定操作。
参见文档和安装说明:https://github.com/mrsarm/mongotail
(也可以从Docker运行,特别是如果你想从Windows https://hub.docker.com/r/mrsarm/mongotail执行它)
db.adminCommand( { getLog: "*" } )
Then
db.adminCommand( { getLog : "global" } )
我写了一个脚本,将打印出系统。当查询进来时,配置文件实时登录。如其他回答中所述,您需要首先启用日志记录。我需要这个,因为我正在使用Linux的Windows子系统,对于它,tail仍然不起作用。
https://github.com/dtruel/mongo-live-logger
我认为oplog虽然不够优雅,但可以部分地用于这个目的:它记录所有的写操作——但不记录读操作……
如果我没猜错的话,你必须马上启用复制。信息来自这个问题的答案:如何监听MongoDB集合的更改?
如果您希望查询被记录到mongodb日志文件,您必须同时设置这两个 日志级别和分析,例如:
db.setLogLevel(1)
db.setProfilingLevel(2)
(参见https://docs.mongodb.com/manual/reference/method/db.setLogLevel)
只设置概要不会将查询记录到文件中,因此您只能从
db.system.profile.find().pretty()