On this page
Log Messages
在本页面
日志消息格式
在版本 3.0 中更改。
从 MongoDB 3.0 开始,MongoDB 包括与每个日志消息关联的severity level和component。日志消息的格式为:
<timestamp> <severity> <component> [<context>] <message>
For example:
2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017
如果 Client 端操作的持续时间超过慢速运行阈值或对数详细级别为 1 或更高,则它们会出现在日志中。这些日志条目包括与操作关联的完整命令对象。
以下示例输出包含有关aggregation操作的信息:
2017-10-13T10:55:42.935-0700 I COMMAND [conn1] command test.items appName: "MongoDB Shell" command: aggregate { aggregate: "items", pipeline: [ { $match: { a: { $gte: 4.0 } } } ], cursor: {} } planSummary: COLLSCAN keysExamined:0 docsExamined:5 cursorExhausted:1 numYields:0 nreturned:2 reslen:155 locks:{ Global: { acquireCount: { r: 8 } }, Database: { acquireCount: { r: 4 } }, Collection: { acquireCount: { r: 3 } } } protocol:op_command 0ms
Timestamp
<timestamp>
的默认格式为iso8601-local
。要修改时间戳记格式,请使用--timeStampFormat运行时选项或systemLog.timeStampFormat设置。
Severity Levels
下表列出了与每个日志消息关联的严重性级别:
Level | Description |
---|---|
F |
Fatal |
E |
Error |
W |
Warning |
I |
信息性,详细级别为0 |
D |
调试,适用于所有详细级别> 0 |
您可以指定各个组件的详细程度,以确定 MongoDB 输出的 Informational 和 Debug 消息的数量。 [1]
要设置详细程度,请参阅配置日志详细级别。
Client Data
3.4 版的新功能。
当您可以将服务器事件与特定的 Client 端请求明确匹配时,Client 端应用程序的调试和性能监视将变得更加容易。考虑到这一点,最近的 MongoDB drivers和 Client 端应用程序(包括mongo Shell)可以在连接到服务器时发送标识信息。构建连接后,除非断开连接并重新构建连接,否则 Client 端不会再次发送标识信息。
所包含的确切字段因 Client 而异。以下是 samplesClient 数据文档:
{
application: {
name: "MongoDB Shell"
},
driver: {
name: "MongoDB Internal Client",
version: "3.4.0"
},
os: {
type: "Darwin",
name: "Mac OS X",
architecture: "x86_64",
version: "15.3.0"
}
}
replica set的次要成员启动与主要成员的连接时,它们会发送类似的数据。典型的连接文档如下:
{
driver: {
name: "NetworkInterfaceASIO-Replication",
version: "3.4.0"
},
os: {
type: "Darwin",
name: "Mac OS X",
architecture: "x86_64",
version: "15.3.0"
}
}
有关 Client 信息和必填字段的完整说明,请参见MongoDB 握手规范。
Components
日志消息现在包括组件,提供了消息的功能分类:
ACCESS
- 与访问控制有关的消息,例如身份验证。要指定ACCESS组件的日志级别,请使用systemLog.component.accessControl.verbosity设置。
COMMAND
- 与database commands相关的消息,例如count。要指定COMMAND组件的日志级别,请使用systemLog.component.command.verbosity设置。
CONTROL
- 与控件活动有关的消息,例如初始化。要指定CONTROL组件的日志级别,请使用systemLog.component.control.verbosity设置。
FTDC
- 3.2 版中的新功能。
与诊断数据收集机制有关的消息,例如服务器统计信息和状态消息。要指定FTDC组件的日志级别,请使用systemLog.component.ftdc.verbosity设置。
GEO
- 与解析地理空间形状有关的消息,例如验证 GeoJSON 形状。要指定GEO组件的日志级别,请设置systemLog.component.geo.verbosity参数。
INDEX
- 与索引操作有关的消息,例如创建索引。要指定INDEX组件的日志级别,请设置systemLog.component.index.verbosity参数。
NETWORK
- 与网络活动有关的消息,例如接受连接。要指定NETWORK组件的日志级别,请设置systemLog.component.network.verbosity参数。
QUERY
- 与查询相关的消息,包括查询计划者活动。要指定QUERY组件的日志级别,请设置systemLog.component.query.verbosity参数。
REPL
- 与副本集相关的消息,例如初始同步,心跳,稳定状态复制和回滚。 [1]要指定REPL组件的日志级别,请设置systemLog.component.replication.verbosity参数。
REPL_HB
- 专门与副本集心跳有关的消息。要指定REPL_HB组件的日志级别,请设置systemLog.component.replication.heartbeats.verbosity参数。
REPL是REPL_HB的父组件。如果未设置systemLog.component.replication.heartbeats.verbosity,则 MongoDB 对REPL_HB组件使用REPL详细级别。
ROLLBACK
- 与rollback操作相关的消息。要指定ROLLBACK组件的日志级别,请设置systemLog.component.replication.rollback.verbosity参数。
REPL是ROLLBACK的父组件。如果未设置systemLog.component.replication.rollback.verbosity,则 MongoDB 对ROLLBACK组件使用REPL详细级别。
SHARDING
- 与分片活动有关的消息,例如mongos的启动。要指定SHARDING组件的日志级别,请使用systemLog.component.sharding.verbosity设置。
STORAGE
- 与存储活动有关的消息,例如fsync命令中涉及的过程。要指定STORAGE组件的日志级别,请使用systemLog.component.storage.verbosity设置。
JOURNAL
- 与日记活动特别相关的消息。要指定JOURNAL组件的日志级别,请使用systemLog.component.storage.journal.verbosity设置。
STORAGE是JOURNAL的父组件。如果未设置systemLog.component.storage.journal.verbosity,则 MongoDB 对JOURNAL组件使用STORAGE详细级别。
WRITE
- 与写操作有关的消息,例如update命令。要指定WRITE组件的日志级别,请使用systemLog.component.write.verbosity设置。
-
- 与命名组件无关的消息。未命名的组件具有systemLog.verbosity设置中指定的默认日志级别。 systemLog.verbosity设置是已命名和未命名组件的默认设置。
Verbosity Levels
查看当前日志详细级别
要查看当前的详细级别,请使用db.getLogComponents()方法。
配置日志详细级别
您可以使用systemLog.verbosity和systemLog.component.<name>.verbosity
设置,logComponentVerbosity参数来配置详细级别。 db.setLogLevel()方法。 [1]
systemLog 详细度设置
要为所有组件配置默认日志级别,请使用systemLog.verbosity设置。要配置特定组件的级别,请使用systemLog.component.<name>.verbosity
设置。
例如,以下配置将systemLog.verbosity设置为1
,将systemLog.component.query.verbosity设置为2
,将systemLog.component.storage.verbosity设置为2
,并将systemLog.component.storage.journal.verbosity设置为1
:
systemLog:
verbosity: 1
component:
query:
verbosity: 2
storage:
verbosity: 2
journal:
verbosity: 1
未在配置中指定的所有组件的systemLog.verbosity为1
。
logComponentVerbosity Parameter
要设置logComponentVerbosity参数,请传递具有详细设置的文档以进行更改。
例如,以下将默认详细程度设置为1
,将query设置为2
,将storage设置为2
,并将storage.journal设置为1
。
db.adminCommand( {
setParameter: 1,
logComponentVerbosity: {
verbosity: 1,
query: {
verbosity: 2
},
storage: {
verbosity: 2,
journal: {
verbosity: 1
}
}
}
} )
db.setLogLevel()
使用db.setLogLevel()方法更新单个组件日志级别。对于组件,您可以指定0
到5
的详细级别,也可以指定-1
继承父级的详细级别。例如,以下代码将systemLog.component.query.verbosity设置为其父级详细程度(即默认详细程度):
db.setLogLevel(-1, "query")