Symfony 编译器传递:我想添加对 Logger 服务的方法调用

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

我想向 Logger 服务添加一个方法调用(函数 setTimezone)。

这是一个函数:https://github.com/Seldaek/monolog/blob/1.x/src/Monolog/Logger.php#L696

那我该怎么做呢?

我想在每次注入该服务时设置 UTC 时区。

我已经尝试过了

public function process(ContainerBuilder $container)
{
    $logger = $container->getDefinition('goobing_core.logging.logger');
    $logger->addMethodCall('setTimezone', [new \DateTimeZone('UTC')]);
}
XmlDumper.php 第 375 行中的 RuntimeException: 如果参数是对象或资源,则无法转储服务容器。

php symfony dependency-injection monolog symfony-2.8
2个回答
0
投票
试试这个:

$utcTimeDefinition = new Definition(\DateTimeZone::class, ['UTC']); $logger = $container->getDefinition('goobing_core.logging.logger'); $logger->addMethodCall('setTimezone', [$utcTimeDefinition]);
    

-1
投票
您应该能够使用捆绑文件中的

build

 方法来执行此操作,请参阅此处的文档 
http://symfony.com/doc/current/service_container/compiler_passes.html

© www.soinside.com 2019 - 2024. All rights reserved.