我的app/config/services.yml
:
services:
FooService:
class: path/to/FooService.php
arguments: [..., "@logger"]
我的FooService.php
:
class FooService
{
public function __construct(..., $logger) {
// $logger here satisfies \Psr\Log\LoggerInterface
}
...
}
我不明白实际的LoggerInterface
参数传入的$logger
实例来自。 Symfony文档说(替换我的示例名称):
在YAML中,特殊的
@logger
语法告诉容器查找名为logger
的服务并将该对象传递给FooService
的构造函数。但是,在这种情况下,必须存在指定的服务logger
。如果没有,则会抛出异常。
显然logger
服务确实存在,因为没有抛出异常,我得到一个对象作为$logger
参数。但是它来自哪里?在文档和我的应用程序中的所有示例中,此语法似乎引用services.yml
中定义的另一个服务。必须在其他地方定义服务,但文档并没有说明在哪里。有线索吗?
答案 0 :(得分:0)
供应商/ symfony的/独白束/的Symfony /捆绑/ MonologBundle /资源/配置/ monolog.xml
请注意,logger实际上是monolog.logger的别名。您可以编写自己的记录器捆绑包作为monolog捆绑包的替代。
跟踪这些事情的一种方法是搜索参数集合的DependencyInjection \ Configuration.php文件,例如“monolog”。