【问题标题】: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 作为唯一的中间件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-05
        • 2011-07-15
        • 2015-11-10
        • 2012-10-05
        • 2011-10-07
        • 2014-10-15
        • 2017-02-25
        • 2012-04-18
        相关资源
        最近更新 更多