文档菜单
文档首页
/
MongoDB 手册
/ /

旋转日志文件

本页内容

  • 概述
  • 默认日志轮换行为
  • 使用 ... 进行日志轮换...
  • 系统日志轮换
  • 使用 SIGUSR1 强制日志轮换

当与--logpath 选项或systemLog.path 设置,mongodmongos 实例会将所有活动和操作实时记录到日志文件中。在将活动数据记录到日志文件时,默认情况下,MongoDB 只在响应 logRotate 命令,或者当 mongodmongos 进程收到操作系统发出的 SIGUSR1 信号时进行日志轮换。服务器日志和 审计日志 都可以使用 logRotate 命令进行轮换,可以是同时或独立进行。

MongoDB 的标准日志轮换方法会将当前日志文件存档并启动一个新的日志文件。为此,mongodmongos 实例会通过在文件名后附加 UTC 时间戳来重命名当前日志文件,格式为 ISODate。然后,它打开一个新的日志文件,关闭旧的日志文件,并将所有新的日志条目发送到新的日志文件中。

您还可以配置 MongoDB 以支持 Linux/Unix 的 logrotate 工具,通过设置 systemLog.logRotate--logRotatereopen。使用 reopenmongodmongos 关闭日志文件,然后重新打开一个同名的日志文件,预期在轮换之前另一个进程已重命名了文件。

最后,您可以使用 mongod--syslog 选项将日志数据发送到 syslog。在这种情况下,您可以利用其他日志轮换工具。

注意

logRotate 不是一个复制命令。您必须连接到复制集的每个实例并运行 logRotate 命令来轮换副本集成员的日志。

要轮换日志文件,您必须执行以下步骤之一

  • mongodmongos 进程发送 SIGUSR1 信号。

  • 运行 MongoDB 的 logRotate 命令。

  • 运行 Linux/Unix 的 logrotate 工具。

请参阅此页后面的示例。

提示

另请参阅

有关日志记录的信息,请参阅进程日志记录部分。

默认情况下,MongoDB使用--logRotate rename行为。使用renamemongodmongos会将当前日志文件重命名,在文件名后添加UTC时间戳,打开一个新的日志文件,关闭旧的日志文件,并将所有新的日志条目发送到新日志文件。

1
mongod -v --logpath /var/log/mongodb/server1.log

您还可以明确指定--logRotate rename

2

在另一个终端中,列出匹配的文件

ls /var/log/mongodb/server1.log*

结果应包括一个日志文件server1.log

3

通过从 admin 数据库发出 logRotate 命令来旋转日志文件。mongosh:

db.adminCommand( { logRotate : "server" } )

如果启用了 审计,您可以指定 1logRotate(而不是 server),以同时旋转服务器和审计日志(如果需要)。审计日志将按照与服务器日志相同的模式旋转,根据 --logRotate 设置。

注意

您不能在已验证副本集的仲裁者上运行此命令。

4

列出新日志文件以查看新创建的日志

ls /var/log/mongodb/server1.log*

应该列出两个日志文件:server1.log,这是 mongodmongos 重新打开日志文件时创建的日志文件,以及重命名的原始日志文件 server1.log.<timestamp>

旋转日志文件不会修改“旧”旋转的日志文件。当您旋转日志时,将将 server1.log 文件重命名为包含时间戳,并接收所有新日志输入的新空 server1.log 文件。

使用 --logRotate reopen 进行日志轮换时,会按照典型的 Linux/Unix 日志轮换行为关闭和打开日志文件。

1
mongod -v --logpath /var/log/mongodb/server1.log --logRotate reopen --logappend

使用 --logappend 选项与 --logRotate reopen 一起使用。

2

在另一个终端中,列出匹配的文件

ls /var/log/mongodb/server1.log*

结果应包括一个日志文件server1.log

3

通过在 admin 数据库中执行 mongosh:

db.adminCommand( { logRotate : "server" } )

您应该使用外部进程重命名日志文件,遵循典型的 Linux/Unix 日志轮换行为。

在系统日志轮换中,mongod 将日志数据发送到系统日志而不是写入文件。

MongoDB 在其日志消息中包含 组件 并将其发送到 syslog

1
mongod --syslog

不要包含--logpath选项。因为--syslog选项已经指示mongod将日志数据发送到syslog,指定--logpath将导致错误。

要指定向syslog发送消息时使用的设施级别,请使用--syslogFacility选项或systemLog.syslogFacility配置设置。

2

使用系统默认的日志轮转机制存储和旋转日志输出。

对于基于 Linux 和 Unix 的系统,您可以使用 SIGUSR1 信号来为一个单个进程轮转日志。

例如,如果一个正在运行的 mongod 实例的进程 ID (PID) 为 2200,以下命令将在 Linux 上轮转该实例的日志文件

kill -SIGUSR1 2200

返回

终止操作