旋转日志文件

在本页面

Overview

当与--logpath选项或systemLog.path设置一起使用时,mongodmongos实例会将所有活动和操作的实时帐户报告到日志文件。将活动数据报告到日志文件时,默认情况下,MongoDB 仅在响应logRotate命令或mongodmongos进程从 os 接收到SIGUSR1signal 时才旋转日志。

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

您还可以通过将systemLog.logRotate--logRotate设置为reopen来配置 MongoDB 以支持 Linux/Unix logrotateUtil。使用reopenmongodmongos关闭日志文件,然后重新打开具有相同名称的日志文件,并期望另一个进程在轮换之前重命名该文件。

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

See also

有关日志记录的信息,请参见Process Logging部分。

默认日志轮换行为

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

启动 mongod 实例。

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

您还可以显式指定logRotate --rename

列出日志文件

在单独的终端中,列出匹配的文件:

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

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

旋转日志文件。

通过在mongo shell 中从admin数据库发出logRotate命令来旋转日志文件:

db.adminCommand( { logRotate : 1 } )

查看新的日志文件

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

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

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

旋转日志文件不会修改“旧的”旋转日志文件。旋转日志时,您将server1.log文件重命名为包括时间戳,而一个新的空server1.log文件将接收所有新的日志 Importing。

使用--logRotate 重新打开日志轮换

3.0.0 版中的新功能。

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

启动 mongod 实例,指定重新打开--logRotate 行为。

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

您必须将--logappend选项与--logRotate reopen一起使用。

列出日志文件

在单独的终端中,列出匹配的文件:

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

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

旋转日志文件。

通过在mongo shell 中从admin数据库发出logRotate命令来旋转日志文件:

db.adminCommand( { logRotate : 1 } )

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

Syslog 日志轮换

通过 syslog 日志轮换,mongod将日志数据发送到 syslog,而不是将其写入文件。

使用--syslog 选项启动 mongod 实例

mongod --syslog

不包括--logpath。由于--syslog告诉mongod将日志数据发送到 syslog,因此指定--logpath将导致错误。

要指定将消息记录到 syslog 时使用的工具级别,请使用--syslogFacility选项或systemLog.syslogFacility配置设置。

旋转日志。

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

使用 SIGUSR1 强制日志轮换

对于基于 Linux 和 Unix 的系统,可以使用SIGUSR1signal 来轮流单个进程的日志,如下所示:

kill -SIGUSR1 <mongod process id>