如何通过docker-compose修改RabbitMQ队列类别的日志级别
实现方法
你现有配置已经把宿主机./.docker/rabbitmq/etc/目录挂载到容器内RabbitMQ的配置目录/etc/rabbitmq/,不需要大幅修改docker-compose配置,两种方案都可以实现设置log.queue.level=warn的需求,选一种即可。
方案1:直接修改挂载目录下的配置文件(推荐,适合多配置项场景)
- 进入宿主机的
./.docker/rabbitmq/etc/目录,新建或编辑已有的rabbitmq.conf文件,在文件中加入如下配置:
log.queue.level = warn
注意:原有配置如果已经存在直接保留即可,不要删除其他已有配置项。RabbitMQ 3.7+版本默认识别这种
key = value格式的新配置语法,不要和旧版Erlang格式的rabbitmq.config配置混用。
- (可选,避免启动权限报错)给挂载目录配置正确权限,RabbitMQ alpine镜像内服务运行用户ID为999,执行以下命令调整权限:
# 测试环境可直接给全权限 chmod -R 777 ./.docker/rabbitmq/ # 生产环境建议修改目录属主 chown -R 999:999 ./.docker/rabbitmq/
- 在docker-compose.yml所在目录执行命令重启容器,让配置生效:
docker-compose up -d rabbitmq
方案2:通过环境变量注入配置(适合少量配置修改场景)
如果不想单独维护本地配置文件,可以直接在docker-compose.yml的environment段新增对应环境变量,RabbitMQ会自动识别加载,修改后的完整docker-compose配置参考如下:
services: rabbitmq: image: rabbitmq:3-management-alpine container_name: rabbitmq volumes: - ./.docker/rabbitmq/etc/:/etc/rabbitmq/ - ./.docker/rabbitmq/data/:/var/lib/rabbitmq/ - ./.docker/rabbitmq/logs/:/var/log/rabbitmq/ environment: RABBITMQ_ERLANG_COOKIE: ${RABBITMQ_ERLANG_COOKIE} RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER} RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS} # 新增以下环境变量,等价于在rabbitmq.conf中配置log.queue.level=warn RABBITMQ_CONFIG_FILE_LOG_QUEUE_LEVEL: warn ports: - 5672:5672 - 15672:15672
- 修改完成后执行
docker-compose up -d rabbitmq重启容器即可生效。
配置生效验证
- 重启完成后执行以下命令进入容器内部:
docker exec -it rabbitmq /bin/sh
- 在容器内执行命令查看当前加载的日志配置:
rabbitmqctl eval 'application:get_env(rabbit, log).'
返回结果中queue对应的日志级别为warn即代表配置生效。
内容的提问来源于stack exchange,提问作者Ousmane MBINTE
相关产品推荐
相关产品推荐

