是否可以在 symfony 项目目录之外编写 monolog 日志?
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 容器上开发,将我的项目目录作为一个卷,但 /tmp/foo
没有明显绑定,所以日志只是放在容器上。
我正在使用 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 容器上开发,将我的项目目录作为一个卷,但 /tmp/foo
没有明显绑定,所以日志只是放在容器上。