如何在mongo db中自动旋转日志?

时间:2016-08-11 06:09:29

标签: windows mongodb logging

我想在Windows操作系统的mongo db中每天自动轮换日志。可能吗?你有像powershell或其他任何建议吗?

感谢

2 个答案:

答案 0 :(得分:1)

使用以下命令

use admin
db.runCommand( { logRotate : 1 } )

确保在启动服务时指定 - logpath

答案 1 :(得分:0)

我认识到这是一个老问题,但是OP要求自动完成这个问题。

Windows任务计划程序可以设置为以所需的时间/频率运行以下批处理文件:

@ECHO OFF
SET MONGO_BIN_DIR=C:\MongoDB\3.6\bin
PUSHD %MONGO_BIN_DIR%
ECHO db.runCommand( { logRotate : 1 } ); > rotateLog.js
mongo admin rotateLog.js
@ECHO ON

请务必更新MONGO_BIN_DIR变量以匹配MongoDB的安装位置。该脚本将切换到bin目录,创建一个新的rotateLog.js文件来保存命令以旋转日志文件(因为mongo客户端只能通过* .js文件而不是直接执行命令)。然后它将执行该javascript文件。

如果需要,您可以随时在@ECHO ON之前添加命令,以删除该“临时”rotateLog.js文件。

正如jerry所提到的,启动服务时必须使用--logpath参数,或者必须在配置文件中设置相应的日志部分。

<强>备选方案:

如果您已经运行了另一个与数据库交互的应用程序,那么您还可以在其中添加功能。 MongoDB的大多数驱动程序都包含对数据库运行命令的功能。找到语言驱动程序的正确语法以获取对“admin”数据库的引用,然后对其运行相同的{ logRotate : 1 }命令。