symfony 4-更改记录器的输出路径

问题描述 投票:0回答:1

我在生产环境中收到一个错误500,所以我花了很多时间来搜索显示错误的位置。我发现使用logger的symfony日志错误默认将输出发送到stderr,因此在我的情况下使用apache的错误日志。我想向symfony的env.log发送消息(例如var/log/dev.logvar/log/prod.log

文档说:

最小日志级别,默认输出和日志格式也可以通过将适当的参数传递给Logger的构造函数来进行更改。为此,请覆盖“记录器”服务定义。

但是我无法弄清楚如何更改记录器的输出,出于测试目的,我成功更改了vendor/symfony/http-kernel/Log/Logger.php中的记录器结构,如下所示:

public function __construct(string $minLevel = null, $output = 'abspath/to/project/var/log/dev.log', callable $formatter = null)

但是我无法编辑供应商目录中的文件。

所以如何覆盖“记录器”服务定义?

php logging symfony4
1个回答
2
投票

请勿编辑供应商文件。这些包含在composer中,并在每次安装/更新时覆盖。

如果您想更改日志路径,可以使用monolog和config来完成

composer require symfony/monolog-bundle


monolog:
    handlers:
        # this "file_log" key could be anything
        file_log:
            type: stream
            # log to var/log/(environment).log
            path: "%kernel.logs_dir%/%kernel.environment%.log" #change path here
            # log *all* messages (debug is lowest level)
            level: debug

        syslog_handler:
            type: syslog
            # log error-level messages and higher
            level: error
© www.soinside.com 2019 - 2024. All rights reserved.