如何最佳地轮换RabbitMQ日志文件

9
我的RabbitMQ日志越来越大,我想知道是否有更好的方法来控制轮换。我希望根据大小轮换日志,并最多保留十个日志。到目前为止,我找到的最好方法是通过在rabbitmq.conf文件中添加SERVER_START_ARGS="-kernel error_logger silent"来关闭日志记录。是否有更好的方法?我想避免使用crontab来实现这个目标。
4个回答

8
最佳选择是将日志轮换逻辑放在您的rabbitmq.conf文件中,如下所示:
{log, [
        {file, [{file, "/var/log/rabbitmq/rabbitmq.log"}, %% log.file
                {level, info},        %% log.file.info
                {date, "$D0"},           %% log.file.rotation.date
                {size, 1024},            %% log.file.rotation.size
                {count, 15}            %% log.file.rotation.count
                ]}
    ]},

2
只是注意,这需要 RabbitMq 3.7 或更高版本。 - Drag0nKn1ght

8

2
最好的方法是升级到RabbitMQ 2.4.1。很多人仍在运行非常旧且已过时的RabbitMQ软件,这些软件存在大型持久化日志的问题。更新版本能更好地处理此类问题,而且还有一个管理插件(可通过Web访问),以及更快的消息路由。
如果可能的话,首先升级到Erlang R14B02,然后再升级RabbitMQ。
如果您要从源代码编译RabbitMQ,则可以跳过Erlang R14B03。

1
“处理得更好”不是一个好的答案,因为它表明在新版本中没有必要进行旋转。请阅读https://www.rabbitmq.com/logging.html,因为“默认情况下不执行日志文件轮换”。 - Flo

1

我认为最好的方法是使用配置文件。我尝试了上述方法,但对我来说它们都没有起作用。我使用了这里提供的以下配置,它起作用了:

  {lager, [

    {handlers, [
      {lager_file_backend, [{file, "rabbit.log"},
                            {level, info},
                            {date, "$D0"},
                            {size, 10},
                            {count, 2}
    ]}]}
    ]},

您可以在此链接https://github.com/basho/lager中找到关于日期、大小和计数的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接