获取日志
定义
getLog
getLog
是一个管理命令,返回最近的 1024 条日志记录。mongod
事件。getLog
不 从mongod
日志文件中读取日志数据。它从已记录的mongod
事件的 RAM 缓存中读取数据。要运行getLog
,请使用db.adminCommand()
方法。getLog
以转义格式返回日志数据 Relaxed Extended JSON v2.0。之前,日志数据以纯文本形式返回。
兼容性
此命令可在以下环境中托管的部署中使用
MongoDB Atlas:云中MongoDB部署的完全托管服务
注意
此命令在所有MongoDB Atlas集群中均受支持。有关Atlas对所有命令的支持信息,请参阅不受支持的命令。
MongoDB Enterprise:基于订阅的、自我管理的MongoDB版本
MongoDB Community:源代码可用的、免费使用且自我管理的MongoDB版本
语法
此命令具有以下语法
db.adminCommand( { getLog: <value> } )
命令字段
getLog
的可能值有
输出
如果指定了 *
,则命令返回一个包含其他可接受值名称的文档。
否则,命令返回一个包含以下字段的文档
包含日志事件数量的
totalLinesWritten
字段包含日志事件的
log
字段一个
db.adminCommand()
response document
,包含状态和时间戳信息。
行为
行截断
getLog
截断包含超过 1024 个字符的任何事件。
字符转义
getLog
以转义形式返回日志数据,格式为 Relaxed Extended JSON v2.0,使用以下转义序列将日志输出渲染为有效的 JSON
表示的字符 | 转义序列 |
---|---|
引号 ( " ) | \" |
反斜杠 ( \ ) | \\ |
退格 ( 0x08 ) | \b |
换页 ( 0x0C ) | \f |
换行 ( 0x0A ) | \n |
回车 ( 0x0D ) | \r |
水平制表符 ( 0x09 ) | \t |
以上未列出的控制字符使用 \uXXXX
转义,其中 "XXXX" 是十六进制格式的 Unicode 代码点。具有无效 UTF-8 编码的字节被替换为 Unicode 替换字符,表示为 \ufffd
。
过滤
在 mongosh
中
getLog
的输出可以被过滤,以便使结果更容易阅读或与特定标准匹配。
以下操作只打印 log
字段(其中包含所有最近日志事件的数组),并从每个日志消息中删除 字符转义。
db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})
使用 jq
在 mongosh
外部
在使用 MongoDB 结构化日志时,第三方 jq 命令行工具 是一个有用的工具,它可以轻松地美化打印日志条目,并进行强大的基于键的匹配和过滤。
jq
是一个开源的 JSON 解析器,适用于 Linux、Windows 和 macOS。
要使用 jq
处理 getLog
的输出,您必须在 --eval
选项中使用 mongosh
。以下操作使用 jq
过滤 REPL 组件,以仅显示与复制相关的日志消息
mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -c '. | select(.c=="REPL")'
请确保根据需要向 mongosh
提供任何必要的连接特定参数,例如 --host
或 --port
.
有关使用 jq
过滤日志输出的更多示例,请参阅 解析结构化日志消息。每个链接示例中提供的 jq
语法可以与上述 mongo --eval
操作配合使用,进行少量调整。例如,以下语法将链接的 "Counting Unique Messages" 示例调整为与 getLog
:
mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -r ".msg" | sort | uniq -c | sort -rn | head -10
示例
检索可用日志过滤器
以下操作,从mongosh
运行,返回传递给getLog
的可用日志过滤器:
db.adminCommand( { getLog: "*" } )
操作返回以下文档
{ "names" : [ "global", "startupWarnings" ], "ok" : 1 }
从日志中检索最近的事件
以下操作,从mongosh
运行,检索mongod
的最近全局
事件:
db.adminCommand( { getLog : "global" } )
操作返回类似以下文档
{ "totalLinesWritten" : <num>, "log" : [ "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"STORAGE\", \"id\":4615611, \"ctx\":\"initandlisten\",\"msg\":\"MongoDB starting\",\"attr\":{\"pid\":12345,\"port\":27001,\"dbPath\":\"/var/lib/mongo\",\"architecture\":\"64-bit\",\"host\":\"server1.example.com\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"CONTROL\", \"id\":23403, \"ctx\":\"initandlisten\",\"msg\":\"Build Info\",\"attr\":{\"buildInfo\":{\"version\":\"4.4.0\",\"gitVersion\":\"328c35e4b883540675fb4b626c53a08f74e43cf0\",\"openSSLVersion\":\"OpenSSL 1.1.1c FIPS 28 May 2019\",\"modules\":[],\"allocator\":\"tcmalloc\",\"environment\":{\"distmod\":\"rhel80\",\"distarch\":\"x86_64\",\"target_arch\":\"x86_64\"}}}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"CONTROL\", \"id\":51765, \"ctx\":\"initandlisten\",\"msg\":\"Operating System\",\"attr\":{\"os\":{\"name\":\"CentOS Linux release 8.0.1905 (Core) \",\"version\":\"Kernel 4.18.0-80.11.2.el8_0.x86_64\"}}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"CONTROL\", \"id\":21951, \"ctx\":\"initandlisten\",\"msg\":\"Options set by command line\",\"attr\":{\"options\":{\"config\":\"/etc/mongod.conf\",\"net\":{\"bindIp\":\"127.0.0.1\",\"port\":27001},\"processManagement\":{\"fork\":true,\"timeZoneInfo\":\"/usr/share/zoneinfo\"},\"replication\":{\"replSetName\":\"repl-shard1\"},\"sharding\":{\"clusterRole\":\"shardsvr\"},\"storage\":{\"dbPath\":\"/var/lib/mongo\",\"journal\":{\"enabled\":true},\"wiredTiger\":{\"engineConfig\":{\"cacheSizeGB\":0.1}}},\"systemLog\":{\"destination\":\"file\",\"logAppend\":true,\"path\":\"/var/log/mongodb/mongod.log\"}}}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.873+00:00\"},\"s\":\"I\", \"c\":\"STORAGE\", \"id\":22270, \"ctx\":\"initandlisten\",\"msg\":\"Storage engine to use detected by data files\",\"attr\":{\"dbpath\":\"/var/lib/mongo\",\"storageEngine\":\"wiredTiger\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.873+00:00\"},\"s\":\"I\", \"c\":\"STORAGE\", \"id\":22315, \"ctx\":\"initandlisten\",\"msg\":\"wiredtiger_open config\",\"attr\":{\"config\":\"create,cache_size=102M,session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000,close_scan_interval=10,close_handle_minimum=250),statistics_log=(wait=0),verbose=[recovery_progress,checkpoint_progress,compact_progress],\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server1.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server2.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server3.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server4.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server5.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server6.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":23015, \"ctx\":\"listener\",\"msg\":\"Listening on\",\"attr\":{\"address\":\"/tmp/mongodb-27001.sock\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":23015, \"ctx\":\"listener\",\"msg\":\"Listening on\",\"attr\":{\"address\":\"127.0.0.1\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":23016, \"ctx\":\"listener\",\"msg\":\"Waiting for connections\",\"attr\":{\"port\":27001,\"ssl\":\"off\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:15:10.392+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":22943, \"ctx\":\"listener\",\"msg\":\"connection accepted\",\"attr\":{\"remote\":\"127.0.0.1:35724\",\"sessionId\":67,\"connectionCount\":30}}", "{\"t\":{\"$date\":\"2020-05-19T19:15:10.393+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":51800, \"ctx\":\"conn67\",\"msg\":\"client metadata\",\"attr\":{\"remote\":\"127.0.0.1:35724\",\"client\":\"conn67\",\"doc\":{\"application\":{\"name\":\"MongoDB Shell\"},\"driver\":{\"name\":\"MongoDB Internal Client\",\"version\":\"4.4.0\"},\"os\":{\"type\":\"Linux\",\"name\":\"CentOS Linux release 8.0.1905 (Core) \",\"architecture\":\"x86_64\",\"version\":\"Kernel 4.18.0-80.11.2.el8_0.x86_64\"}}}}" ], "ok" : 1, "$gleStats" : { "lastOpTime" : Timestamp(<ts>), "electionId" : ObjectId(<id>) }, "lastCommittedOpTime" : Timestamp(<ts>), "$configServerState" : { "opTime" : { "ts" : Timestamp(<ts>), "t" : NumberLong(8) } }, "$clusterTime" : { "clusterTime" : Timestamp(<ts>), "signature" : { "hash" : BinData(<bin>), "keyId" : NumberLong(0) } }, "operationTime" : Timestamp(<ts>) }