On this page本页内容
getLog getLog is an administrative command that returns the most recent 1024 logged 是一个管理命令,它返回最近1024个记录的mongod events. mongod事件。getLog does not read log data from the 不从mongod log file. mongod日志文件读取日志数据。It instead reads data from a RAM cache of logged 相反,它从记录的mongod events. mongod事件的RAM缓存中读取数据。To run 要运行getLog, use the db.adminCommand() method.getLog,请使用db.adminCommand()方法。
Starting in MongoDB 4.4, 从MongoDB 4.4开始,getLog returns log data in escaped Relaxed Extended JSON v2.0 format. getLog以转义的Relaxed Extended JSON v2.0格式返回日志数据。Previously, log data was returned as plaintext.以前,日志数据以明文形式返回。
The getLog command has the following syntax:getLog命令具有以下语法:
db.adminCommand( { getLog: <value> } )
The possible values for getLog are:getLog的可能值为:
* | getLog command. getLog命令返回可用值的列表。 |
global | |
startupWarnings | mongod started without warnings, this filter may return an empty array. mongod在没有警告的情况下启动,此筛选器可能会返回一个空数组。 |
If specified 如果指定了*, then the command returns a document with the names of the other acceptable values.*,则该命令将返回包含其他可接受值名称的文档。
Otherwise, the command returns a document that includes the following fields:否则,该命令将返回包含以下字段的文档:
totalLinesWritten field that contains the number of log eventstotalLinesWritten字段log field that contains an array of log eventslog字段db.adminCommand() response document, containing status and timestamp information.db.adminCommand()响应文档,包含状态和时间戳信息。Starting in MongoDB 4.2, 从MongoDB 4.2开始,getLog truncates any event that contains more than 1024 characters. getLog会截断任何包含1024个以上字符的事件。In earlier versions, 在早期版本中,getLog truncates after 512 characters.getLog在512个字符后截断。
Starting in MongoDB 4.4, 从MongoDB 4.4开始,getLog returns log data in escaped Relaxed Extended JSON v2.0 format, using the following escape sequences to render log output as valid JSON:getLog以转义的Relaxed Extended JSON v2.0格式返回日志数据,使用以下转义序列将日志输出呈现为有效的JSON:
Quotation Mark (") | \" |
Backslash (\) | \\ |
Backspace (0x08) | \b |
Formfeed (0x0C) | \f |
Newline (0x0A) | \n |
Carriage return (0x0D) | \r |
Horizontal tab (0x09) | \t |
Control characters not listed above are escaped with 上面未列出的控制字符用\uXXXX where "XXXX" is the unicode codepoint in hexadecimal. \uXXXX转义,其中“XXXX”是十六进制的unicode代码点。Bytes with invalid UTF-8 encoding are replaced with the unicode replacement character represented by UTF-8编码无效的字节将替换为\ufffd.\ufffd表示的unicode替换字符。
mongoshmongosh内部可以对getLog output can be filtered to make results more readable or to match on specific criteria.getLog输出进行筛选,以使结果更可读或符合特定条件。
The following operation prints just the 以下操作仅打印log field (which contains the array of all recent log events), and removes character escaping from each log message:log字段(包含所有最近日志事件的数组),并从每个日志消息中删除字符转义:
db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})
This operation presents 此操作以与MongoDBgetLog output in the same format as the MongoDB log file.log file相同的格式显示getLog输出。
mongosh with jqmongosh和jq外部When working with MongoDB structured logging, the third-party jq command-line utility is a useful tool that allows for easy pretty-printing of log entries, and powerful key-based matching and filtering.在使用MongoDB结构化日志记录时,第三方jq命令行实用程序是一个有用的工具,它允许轻松漂亮地打印日志条目,以及强大的基于键的匹配和筛选。
jq is an open-source JSON parser, and is available for Linux, Windows, and macOS.是一个开源JSON解析器,可用于Linux、Windows和macOS。
To use 要在jq with getLog output, you must use the --eval option to mongosh. getLog输出中使用jq,必须对mongosh使用--eval选项。The following operation uses 以下操作使用jq对REPL组件进行筛选,以仅显示与复制相关的日志消息:jq to filter on the REPLcomponent to present only those log messages associated with replication:
mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -c '. | select(.c=="REPL")'
Be sure to provide any necessary connection-specific parameters to 确保根据需要向mongosh as needed, such as --host or --port.mongosh提供任何必要的连接特定参数,例如--host或--port。
See Parsing Structured Log Messages for more examples of filtering log output using 有关使用jq. jq筛选日志输出的更多示例,请参阅解析结构化日志消息。The 每个链接示例中提供的jq syntax presented in each linked example can be used with the above mongo --eval operation with minor adjustment. jq语法都可以与上面的mongo --eval操作一起使用,只需稍作调整。For example, the following syntax adapts the linked "Counting Unique Messages" example for use with 例如,以下语法调整了链接的“计数唯一消息”示例,以便与getLog:getLog一起使用:
mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -r ".msg" | sort | uniq -c | sort -rn | head -10
The following operation, run from 从mongosh, returns the available log filters for passing to getLog:mongosh运行的以下操作将返回可用的日志筛选器以传递给getLog:
db.adminCommand( { getLog: "*" } )
The operation returns the following document:该操作返回以下文档:
{ "names" : [ "global", "startupWarnings" ], "ok" : 1 }
The following operation, run from 以下操作从mongosh, retrieves the most recent global events for the mongod:mongosh运行,检索mongod的最新global事件:
db.adminCommand( { getLog : "global" } )
The operation returns a document similar to the following:该操作返回一个类似于以下内容的文档:
{
"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>)
}