定义
- logRotate
- logRotate命令是一条管理命令,允许切换 MongoDB 服务器日志和/或审核日志,以防止单个日志文件占用过多磁盘空间。
兼容性
此命令可用于以下环境中托管的部署:
- MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务 
重要
M 0 、M 2 、M 5和 M 10 + 集群不支持此命令。 有关更多信息,请参阅不支持的命令。
- MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本 
- MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本 
语法
该命令具有以下语法:
db.adminCommand(    {       logRotate: <integer or string>,       comment: <string>    } ) 
命令字段
该命令接受以下字段:
| 字段 | 类型 | 说明 | 
|---|---|---|
| 
 | 整数或字符串 | 要轮换的一个或多个日志,按以下方式进行: 
 | 
| 
 | 字符串 | 可选。日志轮换时服务器记录到日志文件和审核文件的消息。 | 
您也可以通过向 mongod 进程发送 SIGUSR1 信号来轮换日志。
例如,如果正在运行的 mongod 实例的进程 ID (PID) 为 2200,则以下命令在 Linux 上为该实例轮转日志文件:
kill -SIGUSR1 2200 
限制
- 您的 - mongod实例需要使用- --logpath [file]选项运行,才能使用- logRotate
- 必须启用审核才能轮换审核日志。 
行为
systemLog.logRotate 设置或 --logRotate 选项指定 logRotate 的行为。
将 systemLog.logRotate 或 --logRotate 设置为 rename 时,logRotate 通过在文件名中添加当前时间戳来重命名现有日志文件。添加的时间戳具有以下形式:
<YYYY>-<mm>-<DD>T<HH>-<MM>-<SS> 
然后,logRotate 创建一个新的日志文件,其名称与 systemLog.path 设置为 mongod 或 mongos 最初指定的名称相同。
当 systemLog.logRotate 或 --logRotate 设置为 reopen 时,logRotate 遵循典型的 Linux/Unix 行为,只需关闭日志文件然后重新打开同名的日志文件即可。利用 reopen,mongod 期望另一个进程在轮换之前重命名该文件,并且重新打开会创建一个新文件。
示例
下面的示例同时轮换服务器日志和审核日志:
db.adminCommand( { logRotate: 1 } ) 
以下示例仅轮换审核日志,并在轮换时向日志文件提供自定义消息:
db.adminCommand( { logRotate: "audit", comment: "Rotating audit log" } )