2011-02-15 55 views

回答

7

旋转日志自己

http://www.mongodb.org/display/DOCS/Logging

,或者使用 'logrotate的' 用适当的配置。

+4

“有适当的配置”:这正是问题......什么是适当的配置。你的回答(和MongoDB文档)不清楚这个问题。 – jmcollin92 2016-09-16 16:38:26

5

如果你认为32兆是一个日志文件过大,则可能还需要内部看它所包含的内容。

如果日志似乎大多是无害的(“开放连接”“密切联系”),那么你可能要与--quiet开关启动mongod。这会减少一些更详细的日志记录。

+4

或者,从2.0开始,在配置文件中添加`quiet = true`(某些系统上的`/ etc/mongod.conf`)。 – 2012-06-20 19:05:26

48

您可以使用logrotate为您完成这项工作。

/etc/logrotate.d/mongod将这个(假设你使用Linux,并且安装logrotated):

/var/log/mongo/*.log { 
    daily 
    rotate 30 
    compress 
    dateext 
    missingok 
    notifempty 
    sharedscripts 
    copytruncate 
    postrotate 
     /bin/kill -SIGUSR1 `cat /var/lib/mongo/mongod.lock 2> /dev/null` 2> /dev/null || true 
    endscript 
} 
+0

只是FYI,我从10gen的官方rpms安装,lograte自动配置。 – 2011-12-06 15:17:16

0

使用日志轮播是一个不错的选择。同时,它会生成2条记录文件,并且您将不得不按照Brett的建议“添加一行到您的postrotate脚本以删除所有mongod样式旋转日志”。

另外copytruncate不是最好的选择。复制和截断之间总是有一个窗口。一些mongod日志可能会丢失。可以检查logrotate手册页或参考this copytruncate discussion

只需提供一个选项。您可以编写一个脚本,将旋转信号发送给mongod并删除旧的日志文件。 mongologrotate.sh是我写的一个简单的参考脚本。您可以编写一个简单的cron作业或脚本,以便每隔30分钟定期调用一次。