旋转日志文件
在本页面
Overview
当与--logpath
选项或systemLog.path设置一起使用时,mongod和mongos实例会将所有活动和操作的实时帐户报告到日志文件。将活动数据报告到日志文件时,默认情况下,MongoDB 仅在响应logRotate命令或mongod或mongos进程从 os 接收到SIGUSR1
signal 时才旋转日志。
MongoDB 的标准日志轮换方法将存档当前日志文件并启动一个新的日志文件。为此,mongod或mongos实例通过将 UTC 时间戳附加为ISODate格式重命名当前日志文件。然后,它将打开一个新的日志文件,关闭旧的日志文件,并将所有新的日志条目发送到新的日志文件。
您还可以通过将systemLog.logRotate或--logRotate
设置为reopen
来配置 MongoDB 以支持 Linux/Unix logrotateUtil。使用reopen
,mongod或mongos关闭日志文件,然后重新打开具有相同名称的日志文件,并期望另一个进程在轮换之前重命名该文件。
最后,您可以配置mongod将日志数据发送到syslog
。使用--syslog选项。在这种情况下,您可以利用其他对数旋转工具。
See also
有关日志记录的信息,请参见Process Logging部分。
默认日志轮换行为
默认情况下,MongoDB 使用--logRotate rename
行为。使用rename
,mongod或mongos重命名当前日志文件,方法是在文件名后附加 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
(这是mongod或mongos重新打开日志文件时创建的日志文件)和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 的系统,可以使用SIGUSR1
signal 来轮流单个进程的日志,如下所示:
kill -SIGUSR1 <mongod process id>