You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony 7应用中Monolog无法写入prod.log日志求助

Symfony 7 生产环境 Monolog 日志失效排查方案

1. 检查日志目录权限

生产环境下,Web 服务器进程(如 www-data、apache 或 nginx 用户)需要对 var/logs 目录有写入权限:

  • 修改目录所属用户:
    chown -R www-data:www-data var/
    
  • 或调整目录权限(确保组用户拥有写入权限):
    chmod -R 775 var/logs/
    

2. 清除生产环境缓存

修改 Monolog 配置后,必须清除生产环境缓存以确保新配置生效:

php bin/console cache:clear --env=prod --no-debug

3. 排查 FingersCrossed 处理器逻辑

当前生产环境使用 fingers_crossed 处理器,它会缓存日志直到达到指定 action_level 才批量写入:

  • 可临时将其替换为 stream 处理器直接写入日志,验证是否为处理器逻辑问题:
    when@prod:
        monolog:
            handlers:
                main:
                    type: stream
                    path: '%kernel.logs_dir%/%kernel.environment%.log'
                    level: debug
                    channels: ["!event"]
    
  • 替换配置后清除缓存,触发日志检查是否写入文件。

4. 验证 JSON 格式化器是否正常

当前配置使用 monolog.formatter.json,若日志内容包含无法序列化的对象(如资源、闭包),会导致日志写入失败:

  • 临时移除格式化器配置,使用默认文本格式测试:
    when@prod:
        monolog:
            handlers:
                nested:
                    type: stream
                    path: '%kernel.logs_dir%/%kernel.environment%.log'
                    level: debug
                    # 注释掉 JSON 格式化器配置
                    # formatter: monolog.formatter.json
                deprecation:
                    type: stream
                    channels: [deprecation]
                    path: '%kernel.logs_dir%/%kernel.environment%.log'
                    # 注释掉 JSON 格式化器配置
                    # formatter: monolog.formatter.json
    

5. 确认运行环境为生产环境

  • 执行命令查看当前运行环境:
    php bin/console debug:container --env=prod | grep APP_ENV
    
  • 或在控制器中临时输出环境信息(测试后删除):
    public function testLog(LoggerInterface $logger)
    {
        $logger->error('Test error log');
        dump($_ENV['APP_ENV']); // 确认输出为 prod
        die;
    }
    

6. 检查日志通道过滤规则

确保你的日志没有被通道规则排除:当前 main 处理器未设置 channels,默认接收所有通道;若手动指定了日志通道,需确认处理器是否包含该通道。


内容的提问来源于stack exchange,提问作者Prez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:45:55