gpt4 book ai didi

symfony - monolog.logger.db 服务已被删除

转载 作者:行者123 更新时间:2023-12-01 10:23:16 28 4
gpt4 key购买 nike

我正在尝试将一些 Symfony 3 代码重构为 Symfony 4。

尝试登录时出现以下错误:

The "monolog.logger.db" service or alias has been removed or inlined when the container was compiled. You should either make it public, or stop using the conta iner directly and use dependency injection instead.

我的日志记录代码:

$logger = $container->get('monolog.logger.db');
$logger->info('Import command triggered');

独白配置:

monolog:
channels: ['db']
handlers:
db:
channels: ['db']
type: service
id: app.monolog.db_handler

app.monolog.db_handler 配置(注意,我在这里尝试了 public: true 并且它没有任何影响:

app.monolog.db_handler:
class: App\Util\MonologDBHandler
arguments: ['@doctrine.orm.entity_manager']

如何在 Symfony 4 中正确连接它?

最佳答案

默认全部services in Symfony 4 are private (并且是推荐的做法)因此您需要在每个 Controller 中“注入(inject)”每个需要的服务(我个人使用自定义的 CommonControllerServiceClass)。

您还可以创建公共(public) service "alias"像您一样继续访问该服务,但这不是最好的做法(也是因为我猜您还有许多其他服务需要修复)。

mylogger.db:
alias: monolog.logger.db
public: true

然后就可以从容器中获取服务了:

$logger = $container->get('mylogger.db');

关于symfony - monolog.logger.db 服务已被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49107650/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com