我尝试使用以下https://docs.mongodb.com/manual/tutorial/rotate-log-files/中的说明在小型VPS服务器上设置日志轮换。
但是,我发现mongodb日志文件非常大(> 1GB),并且自从尝试设置轮换以来尚未转换。这是我的mongodb.conf
文件中的内容:
dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongodb.log
logappend=true
smallfiles = true
logRotate=reopen
bind_ip = 0.0.0.0
journal=true
replSet = rs0
oplogSize = 100
当我运行db._adminCommand( {getCmdLineOpts: 1})
时,我在systemLog下看到此内容:
"systemLog" : {
"destination" : "file",
"logAppend" : true,
"logRotate" : "reopen",
"path" : "/var/log/mongodb/mongodb.log"
}
我以前使用的是mongod
服务,而不是我当前正在使用的mongodb
服务。似乎旋转适用于mongod
(即使我不记得设置它),因为有些旧日志文件的大小相同,这意味着旋转恰好在文件太大时发生,而不是而不是按计划的时间间隔进行,我希望它能够像以前一样继续工作。查看mongod.conf
文件,这里是配置:
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
首先,我不确定为什么语法不同。我也曾在mongo中运行db.runCommand( { logRotate : 1 } )
命令,尽管我认为这是一次轮换。从mongodb.conf
文件和命令行选项中,我认为它应该可以工作。我还有什么要补充的吗?
logrotate: reopen
表示它将继续打开相同的日志文件,您应该使用外部工具旋转日志。参见Log Rotation with --logRotate reopen。
请注意链接页面中带有reopen
的警告:
--logappend
选项与--logRotate reopen
一起使用。如果要在日志达到一定大小后对其进行轮换,可以将reopen
与logrotate utility结合使用,在大多数Linux发行版中都应使用。有关logrotate实用程序的正确设置,请参见有关特定发行版的手册/教程。这是一些示例:How to setup log rotation for MongoDB properly和Mongodb - proper way to rotate logs。
如果您希望MongoDB为您轮换日志,则应使用logrotate: rename
。这将重命名旧的日志文件,然后在每次服务器重新启动时创建一个新的日志文件。参见Default Log Rotation Behavior。