从MongoDB 3.0开始,MongoDB 在输出到控制台或日志文件(即不输出到[1])时,会为每个日志消息包括严重性级别和组件。syslog
日志消息的格式为:
例如:
[1] | Syslog消息遵循标准的syslog消息格式。从4.2版开始,MongoDB 在其到的日志消息中包括该组件syslog 。 |
当登录到控制台或一个日志文件[2] ,为对的默认格式<timestamp>
是iso8601-local
。要修改时间戳记格式,请使用--timeStampFormat
运行时选项或
systemLog.timeStampFormat
设置。
[2] | 如果登录到syslog ,syslog 守护程序将在记录消息时而不是MongoDB发出消息时生成时间戳。这会导致误导日志条目的时间戳,尤其是在系统负载沉重的情况下。 |
下表列出了与每个日志消息关联的严重性级别:
水平 | 描述 |
---|---|
F |
致命 |
E |
错误 |
W |
警告 |
I |
信息性,针对以下级别 0 |
D [1-5] |
调试,适用于所有详细级别> 从4.2版开始,MongoDB记录调试详细级别。例如,如果详细级别为2,则MongoDB日志 在以前的版本中,MongoDB日志消息仅为 |
您可以指定各个组件的详细程度,以确定MongoDB输出的Informational和Debug消息的数量。[3]
要设置详细级别,请参阅配置日志详细级别。
3.4版的新功能。
当您可以将服务器事件与特定的客户端请求明确匹配时,客户端应用程序的调试和性能监视将变得更加容易。考虑到这一点,最新的MongoDB
驱动程序和客户端应用程序(包括mongo
外壳程序)能够在连接到服务器时发送标识信息。建立连接后,除非断开连接并重新建立连接,否则客户端不会再次发送标识信息。
所包含的确切字段因客户而异。以下是样本客户数据文档:
当副本集的辅助成员 启动与主要对象的连接时,它们将发送相似的数据。典型的连接文档如下:
有关客户信息和必填字段的完整说明,请参阅 MongoDB握手规范。
日志消息现在包括组件,提供了消息的功能分类:
ACCESS
¶与访问控制有关的消息,例如身份验证。要指定ACCESS
组件的日志级别,请使用该
systemLog.component.accessControl.verbosity
设置。
COMMAND
¶与数据库命令有关的消息,例如count
。要指定COMMAND
组件的日志级别
,请使用该
systemLog.component.command.verbosity
设置。
CONTROL
¶与控件活动有关的消息,例如初始化。要指定CONTROL
组件的日志级别,请使用该
systemLog.component.control.verbosity
设置。
ELECTION
¶专门与副本集选择有关的消息。要指定ELECTION
组件的日志级别,请设置
systemLog.component.replication.election.verbosity
参数。
REPL
是的父组件ELECTION
。如果
systemLog.component.replication.election.verbosity
未设置,则MongoDB REPL
对ELECTION
组件使用详细级别
。
FTDC
¶3.2版中的新功能。
与诊断数据收集机制有关的消息,例如服务器统计信息和状态消息。要指定FTDC
组件的日志级别
,请使用该
systemLog.component.ftdc.verbosity
设置。
GEO
¶与解析地理空间形状有关的消息,例如验证GeoJSON形状。要指定GEO
组件的日志级别
,请设置
systemLog.component.geo.verbosity
参数。
INDEX
¶与索引操作有关的消息,例如创建索引。要指定INDEX
组件的日志级别
,请设置
systemLog.component.index.verbosity
参数。
INITSYNC
¶与初始同步操作有关的消息。要指定INITSYNC
组件的日志级别,请设置
systemLog.component.replication.initialSync.verbosity
参数。
REPL
是的父组件INITSYNC
。如果
systemLog.component.replication.initialSync.verbosity
未设置,则MongoDB REPL
对INITSYNC
组件使用详细级别
。
NETWORK
¶与网络活动有关的消息,例如接受连接。要指定NETWORK
组件的日志级别,请设置
systemLog.component.network.verbosity
参数。
QUERY
¶与查询相关的消息,包括查询计划程序活动。要指定QUERY
组件的日志级别,请设置
systemLog.component.query.verbosity
参数。
REPL
¶与副本集相关的消息,例如初始同步,心跳,稳定状态复制和回滚。[3]要指定REPL
组件的日志级别,请设置
systemLog.component.replication.verbosity
参数。
REPL_HB
¶专门与副本集心跳有关的消息。要指定REPL_HB
组件的日志级别,请设置
systemLog.component.replication.heartbeats.verbosity
参数。
REPL
是的父组件REPL_HB
。如果
systemLog.component.replication.heartbeats.verbosity
未设置,则MongoDB REPL
对REPL_HB
组件使用详细级别
。
ROLLBACK
¶与回滚操作有关的消息。要指定ROLLBACK
组件的日志级别
,请设置
systemLog.component.replication.rollback.verbosity
参数。
REPL
是的父组件ROLLBACK
。如果
systemLog.component.replication.rollback.verbosity
未设置,则MongoDB REPL
对ROLLBACK
组件使用详细级别
。
SHARDING
¶与分片活动有关的消息,例如的启动mongos
。要指定SHARDING
组件的日志级别,请使用该
systemLog.component.sharding.verbosity
设置。
STORAGE
¶与存储活动有关的消息,例如fsync
命令中涉及的进程。要指定STORAGE
组件的日志级别
,请使用该
systemLog.component.storage.verbosity
设置。
RECOVERY
¶与恢复活动有关的消息。要指定RECOVERY
组件的日志级别
,请使用该
systemLog.component.storage.recovery.verbosity
设置。
JOURNAL
¶与日记活动特别相关的消息。要指定JOURNAL
组件的日志级别,请使用该
systemLog.component.storage.journal.verbosity
设置。
STORAGE
是的父组件JOURNAL
。如果
systemLog.component.storage.journal.verbosity
未设置,则MongoDB STORAGE
对JOURNAL
组件使用详细级别
。
TXN
¶与多文档交易有关的消息。要指定TXN
组件的日志级别,请使用该
systemLog.component.transaction.verbosity
设置。
WRITE
¶与写操作有关的消息,例如update
命令。要指定WRITE
组件的日志级别,请使用该systemLog.component.write.verbosity
设置。
-
¶与命名组件无关的消息。未命名的组件具有systemLog.verbosity
设置中指定的默认日志级别
。该
systemLog.verbosity
设置是命名和未命名组件的默认设置。
若要查看当前的详细程度,请使用
db.getLogComponents()
方法。
您可以使用systemLog.verbosity
和
systemLog.component.<name>.verbosity
设置,
logComponentVerbosity
参数,配置详细程度
。的
db.setLogLevel()
方法。[3]
systemLog
详细度设置¶要为所有组件配置默认日志级别,请使用该
systemLog.verbosity
设置。要配置特定组件的级别,请使用systemLog.component.<name>.verbosity
设置。
例如,以下配置将
systemLog.verbosity
to 1
,
systemLog.component.query.verbosity
to 2
,
systemLog.component.storage.verbosity
to 2
以及
systemLog.component.storage.journal.verbosity
to设置为1
:
在配置上没有规定,所有组件具有
systemLog.verbosity
的1
。
logComponentVerbosity
参数¶要设置logComponentVerbosity
参数,请传递具有详细设置的文档以进行更改。
例如,以下将设置为,到,到和
到。default verbosity level
1
query
2
storage
2
storage.journal
1
db.setLogLevel()
¶使用该db.setLogLevel()
方法来更新单个组件日志级别。对于组件,您可以指定0
to的
详细级别5
,也可以指定-1
继承父级的详细级别。例如,以下将systemLog.component.query.verbosity
其设置
为其父级详细程度(即默认详细程度):
[3] | (1,2,3,4)在4.2版(在4.0.6也可启动)开始,副本集的次要构件现在
登录OPLOG条目称取比慢的操作阈值长适用。这些缓慢的oplog消息会在组件下的文本中记录为次要日志。这些慢操作日志条目仅取决于慢操作阈值。它们不取决于日志级别(系统级别或组件级别),配置级别或运行缓慢的采样率。探查器不会捕获缓慢的操作日志条目。diagnostic log REPL applied
op: <oplog entry> took <num>ms |