Log Messages

在本页面

日志消息格式

在版本 3.0 中更改。

从 MongoDB 3.0 开始,MongoDB 包括与每个日志消息关联的severity levelcomponent。日志消息的格式为:

<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

日志消息现在包括组件,提供了消息的功能分类:

与诊断数据收集机制有关的消息,例如服务器统计信息和状态消息。要指定FTDC组件的日志级别,请使用systemLog.component.ftdc.verbosity设置。

REPLREPL_HB的父组件。如果未设置systemLog.component.replication.heartbeats.verbosity,则 MongoDB 对REPL_HB组件使用REPL详细级别。

REPLROLLBACK的父组件。如果未设置systemLog.component.replication.rollback.verbosity,则 MongoDB 对ROLLBACK组件使用REPL详细级别。

STORAGEJOURNAL的父组件。如果未设置systemLog.component.storage.journal.verbosity,则 MongoDB 对JOURNAL组件使用STORAGE详细级别。

Verbosity Levels

查看当前日志详细级别

要查看当前的详细级别,请使用db.getLogComponents()方法。

配置日志详细级别

您可以使用systemLog.verbositysystemLog.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.verbosity1

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()方法更新单个组件日志级别。对于组件,您可以指定05的详细级别,也可以指定-1继承父级的详细级别。例如,以下代码将systemLog.component.query.verbosity设置为其父级详细程度(即默认详细程度):

db.setLogLevel(-1, "query")
[1] *(123)*对于从版本 3.6.11 开始的 MongoDB 3.6 部署,副本集的次要成员现在为记录操作日志条目,所花费的时间比慢操作阈值要长。这些慢速 oplog 消息将在文本applied op: <oplog entry> took <num>ms下的REPL组件下的diagnostic log中记录为辅助文件。这些慢操作日志条目仅取决于慢操作阈值。它们不取决于日志级别(系统级别或组件级别),配置级别或运行缓慢的采样率。探查器不会捕获缓慢的操作日志条目。
首页