Symfony+React生产环境api/var/log/prod.log为空问题排查
可能的原因及排查方案
fingers_crossed 处理器触发规则问题
你生产环境默认用的fingers_crossed日志处理器的触发阈值是error级别,只有当应用产生了 error 及以上级别的日志时,才会把缓冲区的所有日志写入到prod.log文件。如果你的生产环境运行正常没有出现错误,日志自然是空的。
要验证这个问题可以临时把action_level改成debug,或者直接把主处理器改成 stream 类型,改完记得清prod缓存。Symfony 生产缓存未清理
你修改monolog.yaml配置后,必须执行php bin/console cache:clear --env=prod清理生产环境缓存,配置才会生效。你只做了前端npm run-script build构建,没清后端缓存的话,改的配置根本不会生效。环境变量配置错误
确认你生产环境的APP_ENV环境变量确实设置为prod,如果实际是dev或者其他值,日志会写入对应环境的日志文件,不会写到prod.log。可以执行php bin/console about --env=prod查看实际生效的环境配置。日志写入路径不匹配
你 Kernel 中配置的日志目录是项目根目录下的/var/log,需要确认生产环境中getProjectDir()实际指向的路径是不是你预期的api目录,避免找错日志文件的存放位置。写入权限/PHP配置限制
即使你给了prod.log0777权限,也要确认运行PHP进程(php-fpm、apache mod-php等)的用户对日志目录有写入权限,同时检查PHP的open_basedir配置有没有限制日志目录的写入权限。可以手动写一行测试error日志验证写入是否正常。
内容的提问来源于stack exchange,提问作者DisplayName

