【问题标题】:How to have DBAL's setSQLLogger in symfony如何在 symfony 中拥有 DBAL 的 setSQLLogger
【发布时间】:2015-03-05 19:00:16
【问题描述】:

我可以通过这种方式连接到 symfony2 中的教义:

# Doctrine Configuration
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                    driver:   "%database_driver%"
                    host:     "%database_host%"
                    port:     "%database_port%"
                    dbname:   "%database_name%"
                    user:     "%database_user%"
                    password: "%database_password%"
                    charset:  UTF8
                    mapping_types:
                                  enum: string

    orm:
        auto_generate_proxy_classes: false
        proxy_namespace: Proxies
        proxy_dir: Proxies
        default_entity_manager: default # The first defined is used if not set
        entity_managers:
            default:
                    connection: default
                    mappings: # Required
                             ApplicationUserBundle:
                                   type: annotation
                    class_metadata_factory_name: Doctrine\ORM\Mapping\ClassMetadataFactory
                    dql:
                        datetime_functions:
                        UNIX_TIMESTAMP: DoctrineExtensions\Query\Mysql\UnixTimestamp

现在我的问题是如何在上面的配置中使用它?

$config->setSQLLogger(new Doctrine\DBAL\Logging\EchoSQLLogger());

我的意思不是this。由于这是一个 $config 方法,我想应该可以在 config.yml 中使用它,但是如何?

【问题讨论】:

    标签: symfony doctrine-orm doctrine dbal


    【解决方案1】:

    你需要填写几个配置参数

    doctrine.yaml 配置文件中启用日志记录

    doctrine:
        dbal:
            logging: true
    

    services.yaml配置文件中设置记录器类

    services:
        doctrine.dbal.logger:
            class: Doctrine\DBAL\Logging\EchoSQLLogger
    

    使用前不要忘记清理 Symfony 缓存 php bin/console cache:clear

    【讨论】:

    • 不幸的是,这不起作用。 logger.class 不是有效的设置名称。 Just logging is valid。你指的是parameter name for the class of the default dbal logger service
    • 太好了,很高兴它有帮助!我也试过你的建议,它的工作原理!昨天我尝试了相反的方法:将类标记为记录器,使用Doctrine\DBAL\Logging\EchoSQLLogger: '@doctrine.dbal.logger',但排序没有效果... – 通过您的编辑,我设法使其工作(创建自定义 ErrorLogSQLLogger)谢谢! ?
    猜你喜欢
    • 2022-12-21
    • 2015-02-28
    • 2014-04-16
    • 2015-07-06
    • 1970-01-01
    • 2015-09-13
    • 2015-10-14
    • 2018-12-18
    • 1970-01-01
    相关资源
    最近更新 更多