[英]Is it possible to write monolog logs outside of the symfony project directory?
我正在使用symfony 4.1和monolog 3.3。 我的symfony项目位于以下目录: /var/www/html/{project_dir}
。 在生产环境中,我希望将日志存储在/tmp/foo
而不是标准symfony目录中: {project_dir_path}/var/log
。
我将Kernel::getLogDir()
方法更改为以下内容:
public function getLogDir()
{
return 'prod' === $this->environment
? '/tmp/foo'
: $this->getProjectDir().'/var/log';
}
我的生产monolog.yaml
路径如下所示:
path: "%kernel.logs_dir%/%kernel.environment%.log"
我的测试问题环境设置为“ prod”。
在调试时,可以看到monolog的日志目录正确设置为/tmp/foo
。 /tmp/foo
具有适当的访问权限(0766),但是当我尝试记录某些内容时,该目录不包含任何内容。
从概念上讲,您不能出于安全原因。 但是,您可以通过在项目目录中为正确的目录文件夹创建符号链接来绕过它。
就像是:
public function getLogDir()
{
return 'prod' === $this->environment
? '/var/symlink-to-tmp-folder'
: $this->getProjectDir().'/var/log';
}
解决了,简单的错误。 我正在docker容器上进行开发,将我的项目目录设为volumeine,但是/tmp/foo
显然未绑定,因此日志只是放在容器上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.