方法setSQLLogger已弃用-Doctrine\DBAL\Configuration



我正在将应用程序从Symfony 5.4升级到Symfony 6.0。一路上,我不得不升级一些教义图书馆。

我们目前正在使用setSQLLogger(null(来避免启用SQL日志记录。通过使用新版本的条令,我得到了一个警告:

Doctrine\DBAL\Configuration::setSQLLogger方法已被弃用(请改用{@seesetMiddlewares((}和{@see \DBAL\Logging\Middleware}(

我不知道如何用setMiddleware替换setSQLLogger(null(,以便禁用SQL日志记录。

有人遇到这个问题并设法解决了吗?

谢谢。

我替换了这个代码:

$em->getConnection()->getConfiguration()->setSQLLogger(null);

带有:

$em->getConnection()->getConfiguration()->setMiddlewares([new DoctrineDBALLoggingMiddleware(new PsrLogNullLogger())]);

这使得NullLogger成为唯一的中间件。

您应该配置一个中间件来接受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替换该方法调用。

我自己没有尝试过,因为我们运行的是旧版本,但我很有信心这会解决您的问题。

最新更新