Symfony 5.4中MonologBundle日志重复记录问题求助
检查全局Monolog配置:Symfony的MonologBundle默认会存在
main这类默认handler,如果该handler未明确排除channel_starcloud频道,会导致日志同时被默认handler和自定义的starcloudHandler记录。需在prod环境的主配置(config/packages/monolog.yaml)中,给默认handler添加channels: ['!channel_starcloud'],避免重复捕获同频道日志。确认配置加载优先级:生产/预发布环境可能存在额外配置文件或导入规则,检查
config/packages/prod/monolog.yaml是否覆盖全局配置,或是否有其他配置重复定义了同频道的handler,导致多个handler监听同一频道。排查容器缓存与实际配置:生产环境容器编译缓存可能引发配置异常,先执行
bin/console cache:clear --env=prod清理缓存,再通过bin/console debug:config monolog --env=prod查看实际生效的handlers与channels映射,确认是否存在重复的handler绑定同一频道。追踪日志调用来源:在Monolog配置中添加调用栈处理器(
processor: [monolog.processor.stack_trace]),查看重复日志的调用栈是否一致,判断是配置问题还是业务代码中存在重复触发日志的逻辑(比如事件多次触发、中间件重复调用日志方法)。验证环境变量差异:对比生产/预发布环境与本地测试prod环境的环境变量,检查是否存在
MONOLOG_DEBUG等影响Monolog行为的变量差异,确保服务器环境变量与本地测试环境一致。检查版本兼容性:确认项目中MonologBundle版本与Symfony 5.4的兼容性,是否存在已知的重复日志bug。尝试将MonologBundle更新至对应Symfony版本的最新稳定版,再测试问题是否解决。
内容的提问来源于stack exchange,提问作者Amine AQIL

