启用RabbitMQ自定义插件后Docker控制台无日志输出求助
以下是针对你的问题的具体排查步骤:
重启RabbitMQ容器确保插件加载
部分RabbitMQ插件启用后需要重启容器才能完成加载,执行命令:docker restart ecomm-rabbit重启后再查看日志,验证插件启动日志是否出现。
直接查看RabbitMQ本地日志文件
Docker控制台输出可能截断或过滤部分日志,进入容器查看完整的RabbitMQ日志:docker exec -it ecomm-rabbit tail -f /var/log/rabbitmq/rabbit@my-rabbit.log该文件包含所有RabbitMQ及插件的日志输出,包括你用
rabbit_log:info打印的内容。检查RabbitMQ日志级别配置
确认RabbitMQ的日志级别是否允许输出info级别的内容:docker exec -it ecomm-rabbit cat /etc/rabbitmq/rabbitmq.conf若存在
log.level配置且值为warning或error,会过滤掉info级日志,需修改为log.level = info后重启容器。验证插件依赖版本匹配
你的RabbitMQ版本为4.0.6(从插件列表中rabbitmq_amqp1_0的版本可推断),但rebar.config中依赖的amqp_client和rabbit_common为4.0.3,版本不匹配会导致插件加载失败或功能异常。修改依赖版本:{deps, [ {amqp_client, "4.0.6"}, {rabbit_common, "4.0.6"} ]}.重新编译并部署插件。
确认
rabbit_log的依赖引入rabbit_log模块属于rabbit_common应用,需在my_plugin.app.src的applications列表中添加该依赖:{applications, [kernel, stdlib, rabbit, rabbit_common, amqp_client]},缺少该依赖会导致
rabbit_log:info调用失败,无日志输出。检查插件包完整性
验证生成的.ez包是否包含所有必要的编译文件:docker exec -it ecomm-rabbit unzip -l /opt/rabbitmq/plugins/my_plugin-0.1.0.ez确认
my_plugin.beam、my_plugin_sup.beam、my_plugin_worker.beam均存在,若缺失需重新编译插件。
内容的提问来源于stack exchange,提问作者71a1den

