文档菜单
文档首页
/
MongoDB 手册
/ / /

获取日志

本页内容

  • 定义
  • 兼容性
  • 语法
  • 命令字段
  • 输出
  • 行为
  • 过滤
  • 示例
getLog

getLog 是一个管理命令,返回最近的 1024 条日志记录。mongod 事件。 getLog mongod 日志文件中读取日志数据。它从已记录的 mongod 事件的 RAM 缓存中读取数据。要运行 getLog,请使用 db.adminCommand() 方法。

getLog 以转义格式返回日志数据 Relaxed Extended JSON v2.0。之前,日志数据以纯文本形式返回。

此命令可在以下环境中托管的部署中使用

  • MongoDB Atlas:云中MongoDB部署的完全托管服务

注意

此命令在所有MongoDB Atlas集群中均受支持。有关Atlas对所有命令的支持信息,请参阅不受支持的命令。

此命令具有以下语法

db.adminCommand(
{
getLog: <value>
}
)

getLog 的可能值有

描述
*
返回 getLog 命令的可选值列表。
global
返回所有最近日志条目的合并输出。
startupWarnings
返回自当前进程启动以来可能包含错误或警告的日志条目。如果 mongod 启动时没有警告,此过滤器可能返回空数组。

注意

getLog 命令不再接受 rs 值,因为此类消息类型的分类已被弃用。相反,日志消息现在总是通过它们的 组件 来识别,包括用于复制消息的 REPL。有关基于组件字段的日志解析示例,请参阅 按组件过滤

如果指定了 *,则命令返回一个包含其他可接受值名称的文档。

否则,命令返回一个包含以下字段的文档

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

getLog 的输出可以被过滤,以便使结果更容易阅读或与特定标准匹配。

以下操作只打印 log 字段(其中包含所有最近日志事件的数组),并从每个日志消息中删除 字符转义

db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})

此操作以与 MongoDB 日志文件 相同的格式呈现 getLog 的输出。

注意

getLog 只显示最近的 1024 个已记录的 mongod 事件,不能替代 MongoDB 日志文件

在使用 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>)
}

返回

获取命令行选项