Symfony 4 自定义 Bundle 使用 Logger 接口

3

我正在尝试实现一个自定义的Symfony Bundle,在我的服务中,我需要传递全局Symfony日志记录器,它是我在Symfony应用程序中定义的Psr\Log\LoggerInterface实例。问题是,当我使用ContainerBuilder配置我的服务时,日志记录器服务尚未初始化。

在我的Bundle服务中,我是这样传递Logger的:

public function __construct(LoggerInterface $logger, $argument1, $argument2);

两个参数来自packages/my_custom_bundle_config.yaml文件。然而,即使在上述配置文件中,我也无法将应用程序的Logger作为参数传递。
非常感谢您的帮助和评论。
谢谢。

1
你能详细说明为什么无法传递记录器吗?你是否遇到异常?你可以发布消息吗?你的配置是什么样子的? - dbrumann
1个回答

0

你需要做三件事:

  1. 创建一个编译器传递。你可以在文档中搜索它们。基本上,它们允许你在容器编译之前修改容器,在所有定义和别名都已注册时。

  2. 在你的配置类中为日志记录器定义一个服务ID是非常好的实践,以防用户想要使用不同的实现。在你的扩展类中,你应该将该引用作为参数传递。

  3. 通常,所有依赖于psr接口的bundle都会将其别名注册到默认实现。它们通常被称为logger.default或类似的名称。你可以在monolog bundle扩展类中搜索它们使用的定义,或者使用接口,该接口将具有别名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接