如何覆盖默认 Psr\LogLoggerInterface 别名

How override default Psr\LogLoggerInterface alias

我尝试为实现此接口的服务创建 ID 为 'Psr\Log\LoggerInterface' 的别名。
但是别名好像不行。

这是我在services.yaml

中的配置
services:
    A\Name\Space\LoggerService:
        arguments:
            $arg1: ''
            $arg2: ''

    Psr\Log\LoggerInterface:
        alias: A\Name\Space\LoggerService

这是我尝试在控制器中获取服务的方式:

class SomeController extends AbstractController
{
    public function index(LoggerInterface $logger): Response
    {
        $logger->info('index');
        return $this->render('index.html.twig');
    }
}

我希望通过 class A\Name\Space\LoggerService 获得服务,但我得到 class ‌Symfony\Component\HttpKernel\Log\Logger.

如果我直接获得服务,效果很好:

class SomeController extends AbstractController
{
    public function index(\A\Name\Space\LoggerService $logger): Response
    {
        $logger->info('index');
        return $this->render('index.html.twig');
    }
}

最后,如果我将别名更改为:

logger:
    alias: A\Name\Space\LoggerService

效果很好。但我不想覆盖 Symfony 记录器服务, 别名。

像这样 绑定 怎么样 :

services:
    _defaults:
        bind:
            #...
            Psr\Log\LoggerInterface $logger: '@A\Name\Space\LoggerService'

https://symfony.com/doc/current/service_container.html#binding-arguments-by-name-or-type