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替换字符。
mongosh
mongosh
内部可以对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 jq
mongosh
和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>) }