【问题标题】:Method setSQLLogger deprecated - Doctrine\DBAL\Configuration方法 setSQLLogger 已弃用 - Doctrine\\DBAL\\Configuration
【发布时间】:2022-12-21 17:54:40
【问题描述】:
我正在将应用程序从 Symfony 5.4 升级到 Symfony 6.0。一路上,我不得不升级一些学说库。
我们目前正在使用 setSQLLogger(null) 来避免启用 SQL 日志记录。通过使用较新版本的 Doctrine,我收到警告:
Doctrine\DBAL\Configuration::setSQLLogger 方法已弃用(使用 {@see setMiddlewares()} 和 {@see \Doctrine\DBAL\Logging\Middleware} 代替。)。
我不知道如何用 setMiddlewares 替换 setSQLLogger(null) 以便禁用 SQL 日志记录。
有没有人遇到这个问题并设法解决它?
谢谢。
【问题讨论】:
标签:
php
symfony
doctrine-orm
dbal
【解决方案1】:
您应该配置一个middleware 以接受NullLogger,然后将其与setMiddlewares 方法一起使用。
所以从 symfony 的角度来看,你可以做类似的事情
# configuration.yaml // or whatever name you have
services:
doctrine.logging.middleware.null: // or whatever name you prefer
class: DoctrineDBALLoggingMiddleware
autowire: false
arguments:
- #FQCN or service id of NullLogger
然后您可以将它注入您使用setLogger 的位置,并将该方法调用替换为setMiddlewares。
我自己没有尝试过,因为我们在旧版本上运行,但我非常有信心这应该可以解决您的问题。
【解决方案2】:
我替换了这段代码:
$em->getConnection()->getConfiguration()->setSQLLogger(null);
和:
$em->getConnection()->getConfiguration()->setMiddlewares([new DoctrineDBALLoggingMiddleware(new PsrLogNullLogger())]);
这将 NullLogger 作为唯一的中间件。